参考:

一、Ansible的工具

1.1 Ansible的工作前提

Ansible正常工作需要满足两个前提:

  1. 主控机与被控机都要开启SSH服务
  2. 主控机与被控即都要装有Python

1.2 Ansible的安装文件

[root@localhost /]# rpm -ql ansible | more
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles
/usr/bin/ansible
/usr/bin/ansible-config
/usr/bin/ansible-connection
/usr/bin/ansible-console
/usr/bin/ansible-doc
/usr/bin/ansible-galaxy
/usr/bin/ansible-inventory
/usr/bin/ansible-playbook
/usr/bin/ansible-pull
/usr/bin/ansible-vault
--More--

通过 rpm -ql ansible | more 命令可查看 Ansible的相关文件:

/etc/ansible/ansible.cfg :默认ansible的默认配置文件位置

/etc/ansible/hosts :默认inventory主机清单位置

/etc/ansible/roles:默认inventory角色位置

/usr/bin/ansible :ansible命令的文件

/usr/lib/python3.6/site-packages/ansible:提供Python模块

/usr/share/man/man1/ :帮助文档

备注:RPM(红帽软件包管理器)。RPM 有点像Windows 系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。

1.3 Ansible的配置文件

[root@localhost /]# grep "^\[" /etc/ansible/ansible.cfg
[defaults]
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]

以下是/etc/ansible/ansible.cfg中配置块的含义:

[defaults]:默认常用配置

[inventory]:主机清单插件

[privilege_escalation]:用于提权

[paramiko_connection]:Python paramiko模块的连接设备(默认SSH)

[ssh_connection]:SSH连接设置

[persistent_connection]:长连接设置

[accelerate]:加速模式的配置

[selinux]:selinux设置

[colors]:输出结果颜色的设置

[diff]:输出不同的设置

1.4 Ansible的相关工具

[root@localhost /]# ansible
ansible ansible-doc ansible-pull
ansible-config ansible-galaxy ansible-vault
ansible-connection ansible-inventory
ansible-console ansible-playbook

输入 ansible 然后双击Tab键

ansible:主程序,临时命令执行工具

ansible-doc:用于查看配置文档,模块功能

ansible-galaxy:用于上传、下载Roles模块,需要网络

ansible-playbook:用于定制自动化任务,编排剧本的工具

ansible-pull:用于远程执行命令的工具

ansible-vault:文件加密工具

ansible-console:基于Console界面与用户交互的执行工具

利用ansible实现管理的主要方式:

  1. 临时命令使用场景 —> Ad-hoc
  2. 大型项目场景,有规划过程 —> Ansible-playbook

1.4.1 【帮助工具】Ansible-doc

[root@localhost /]# ansible-doc -l | wc -l
3387

ansible-doc -l | wc -l :可以查看ansible有多少个模块

ansible-doc -l | grep <module_name> :可以查看相关的模块

ansible-doc <module_name> :可以查看对应模块的详细功能

1.4.2 【角色共享】Ansible-galaxy

  • Ansible-galaxy官网:Ansible Galaxy

    Galaxy中可以下载到写好的Roles(Roles可以理解为Playbook的集合)

Galaxy安装一个Nginx Rols的示例:

  1. 以Web类为例

  1. 下载一个Nginx

  1. 通过命令ansible-galaxy install <module_name>安装
[root@localhost /]# ansible-galaxy install geerlingguy.nginx

- downloading role 'nginx', owned by geerlingguy

- downloading role from https://github.com/geerlingguy/ansible-role-nginx/archive/3.1.0.tar.gz
- extracting geerlingguy.nginx to /root/.ansible/roles/geerlingguy.nginx
- geerlingguy.nginx (3.1.0) was installed successfully
  1. 安装完之后,默认会放在用户家目录下的.ansible目录中

默认放在:/root/.ansible/roles/<role_name>

[root@localhost geerlingguy.nginx]# pwd
/root/.ansible/roles/geerlingguy.nginx
  1. 会有以下的目录及文件
[root@localhost geerlingguy.nginx]# tree .
.
├── defaults
│&nbsp;&nbsp; └── main.yml
├── handlers
│&nbsp;&nbsp; └── main.yml
├── LICENSE
├── meta
│&nbsp;&nbsp; └── main.yml
├── molecule
│&nbsp;&nbsp; └── default
│&nbsp;&nbsp; ├── converge.yml
│&nbsp;&nbsp; └── molecule.yml
├── README.md
├── tasks
│&nbsp;&nbsp; ├── main.yml
│&nbsp;&nbsp; ├── setup-Archlinux.yml
│&nbsp;&nbsp; ├── setup-Debian.yml
│&nbsp;&nbsp; ├── setup-FreeBSD.yml
│&nbsp;&nbsp; ├── setup-OpenBSD.yml
│&nbsp;&nbsp; ├── setup-RedHat.yml
│&nbsp;&nbsp; ├── setup-Ubuntu.yml
│&nbsp;&nbsp; └── vhosts.yml
├── templates
│&nbsp;&nbsp; ├── nginx.conf.j2
│&nbsp;&nbsp; ├── nginx.repo.j2
│&nbsp;&nbsp; └── vhost.j2
└── vars
├── Archlinux.yml
├── Debian.yml
├── FreeBSD.yml
├── OpenBSD.yml
├── RedHat.yml
└── Rocky.yml

各个文件夹下文件的作用后面补充

1.4.3 【剧本工具】Ansible-playbook

ansible-playbook <playbook_name> :用于执行写好的剧本

1.4.4 【加密工具】Ansible-vault

ansible-vault encrypt <playbook_name>:加密Playbook

ansible-vault decrypt <playbook_name>:解密Playbook

ansible-vault view <playbook_name>:查看加密的Playbook

ansible-vault edit <playbook_name>:编辑加密的Playbook

ansible-vault create <playbook_name>:创建新的加密的Playbook

加解密的示例:

  1. 一个未加密的 test.yml 文件

  2. 将 test.yml 加密

1.4.5 【交互工具】Ansible-console

[root@localhost /]# ansible-console
Welcome to the ansible console.
Type help or ? to list commands. root@all (2)[f:5]$ cd vm_group
root@vm_group (2)[f:5]$ ping
vm2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
vm1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
root@vm_group (2)[f:5]$

通过 ansible-console 工具,可以实现交互输入命令

forks n:设置并发数

cd <host_group>:切换主机组

list:列出主机组列表

help&?:列出内置命令

ping:ping测试(当前主机组)

二、Ansible的模块

参考:

2.1 Ansible 模块简介

我们可以通过 ansible-doc -l 查看所有的模块。

通过 ansible-doc <module_name> 查看指定模块的帮助信息。

模块有两种调用方式,一种通过ad-hoc命令行,另一种通过playbook调用。

第一种:ad-hoc 命令行

格式:ansible <host_group> -m <module_name> -a "key=value"

通过 -m 指定模块,通过 -a 指定参数(key=value的形式)

例如:

ansible webservers -m service -a "name=httpd state=started"
ansible webservers -m ping
ansible webservers -m command -a "/sbin/reboot -t now"

第二种:playbook 剧本

例如:

  1. 以简单key:value的形式传递参数
- name: reboot the servers
action: command /sbin/reboot -t now

​ 或者简写成:

- name: reboot the servers
command: /sbin/reboot -t now
  1. 以yaml语法中的"complex args"传递参数
- name: restart webserver
service:
name: httpd
state: restarted

2.2 Ansible 模块速查

所有内置的模块都可以到上面的文档中查找

模块种类有很多,如云计算类模块、集群类模块、命令类模块、数据库类模块、文件类模块、消息类模块、监控类模块等等。根据需求可以到网站中查找模块的详细说明。

至于一些常见的模块,后面专门整理一篇博文(✿◡‿◡)!

2.3 共同的返回值

2.3.1 Facts

一些模块返回"facts"(例如:setup模块),这些是通过一个"ansible_facts"作为key和内部一些自动收集的值直接作为当前主机的变量并且他们不需要注册这些数据。

2.3.2 Status

每一个模块都必须返回一个status,来表示这个模块是成功的,是否有任何改变或者没有发生改变。当检查模式下发现模块不支持或者不满足某些条件,Ansible自己会返回一个status并跳过这个模块。

2.3.3 其他的共同返回值

如msg,会被用来解释执行失败的原因或者是关于执行过程的一些说明。

[Linux]Ansible自动化运维② - 工具与模块的更多相关文章

  1. Ansible自动化运维工具及其常用模块

    Ansible自动化运维工具及其常用模块 目录 Ansible自动化运维工具及其常用模块 一.Ansible简介 1. Ansible概述 2. Ansible作用 3. Ansible的工作模块 4 ...

  2. Ansible自动化运维工具-上

    [Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...

  3. Ansible 自动化运维工具

    Ansible 自动化运维工具 Ansible是什么? Ansible是一个"配置管理工具"也是一个"自动化运维工具" Ansible 作用: Ansible是 ...

  4. Ansible自动化运维工具的使用

                                 Ansible自动化运维工具的使用       host lnventory 管理主机 ip  root账号密码 ssh端口 core mod ...

  5. Linux轻量级自动化运维工具— Ansible

    Ansible 是什么 ? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配 ...

  6. Ansible自动化运维工具使用

    概述本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装主机配置Ad-Hoc command(命令行执行)Playbook (任务剧本)Ansible 和 Sa ...

  7. ansible自动化运维工具使用详解

    一. ansible 简介 1. ansible ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行 ...

  8. Ansible自动化运维工具

    ansible软件介绍 python语言是运维人员必会的语言!  ansible是一个基于Python开发的自动化运维工具!(saltstack)  其功能实现基于SSH远程连接服务!  ans ...

  9. [Linux]Ansible自动化运维① - 入门知识

    目录 一.Ansible 概述 1.1 Ansible 是什么 1.2 Ansible 优势 1.3 Ansible 特性 二.Ansible 入门 2.1 Ansible 架构 2.2 Ansibl ...

随机推荐

  1. 微信小程序学习笔记一 小程序介绍 & 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  2. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  3. lambda与方法引用

    哈喽,大家好,我是指北君. 虽然目前Java最新版本都已经到16了,但是绝大部分公司目前用的Java版本都是8,想当初Java8问世后,其Lambda表达式与方法引用可是最亮眼的新特性,目前,这两个特 ...

  4. Scan error on column index 1, name “created_at“: unsupported Scan, storing driver.Value type []uint8

    使用gorm,出现以下报错 在连接数据库时加上: parseTime=True db, err = gorm.Open(utils.Db, fmt.Sprintf("%s:%s@(%s:%s ...

  5. Linux云服务部署Spring boot项目

    Linux云服务部署Spring boot项目 背景: 之前经过两个周的时间,做了一个简单的博客网站,网址:点击进入,在本地可以正常使用以后,想着部署到服务器上,给大家伙看个乐呵,于是有了这篇部署文章 ...

  6. Ubuntu18.04 + NVidia显卡 + Anaconda3 + Tensorflow-GPU 安装、配置、测试 (无需手动安装CUDA)

    其中其决定作用的是这篇文章  https://www.pugetsystems.com/labs/hpc/Install-TensorFlow-with-GPU-Support-the-Easy-Wa ...

  7. 【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(上)

    前言介绍 了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进 ...

  8. shell脚本测试变量是否为空,测试文件是否存在,sed修改配置文件参数,分支语句

    Shell脚本 1. 基本的几个变量 使用$?获取最近一次的执行结果: 使用$#获取传递的参数个数,类似C语言中的int argc; 使用$@获取所有的传参,类似C语言的char **argv 2. ...

  9. uniapp 获取用户手机号

    参考资料: 微信小程序官方文档 uniapp开发微信小程序获取用户手机号 页面增加一个按钮 <button open-type="getPhoneNumber" @getph ...

  10. Identity基于角色的访问授权

    详情访问官方文档 例如,以下代码将访问权限限制为属于角色成员的用户的任何操作 AdministrationController Administrator : [Authorize(Roles = & ...