目录
一、ansible特点
二、ansible应用
三、ansible搭建
1、 实验环境,准备三台服务器,关闭防火墙
2、在ansible(192.168.1.12)服务器上yum安装ansible
3、创建ssh免交互登录
四、ansible配置
五、ansible命令
1)ansible
2)ansible-doc
3)ansible-playbook
4) ansible-console
Ansible工具集合了inventory,Moudles,Plugins和API。其中,inventory用来管理设备列表,可以通过分组(不同的业务)实现,对组的调用直接影响组内所有的主机;Moudles是各种执行模块,几乎所有的管理任务都是通过模块来执行的;Plugins提供了各种附加功能;API为编程人员提供了一个调用接口,可以做Ansible的二次开发具体表现如下:
192.168.1.12 ansible
192.168.1.133 client1
192.168.1.134 client2
[root@ansible ~] systemctl stop firewalld
[root@ansible ~] setenforce 0
[root@ansible ~] iptables -F
[root@ansible ~] yum -y install epel-release
[root@ansible ~] yum -y install ansible
[root@ansible ~] ssh-keygen -t rsa
[root@ansible ~] ssh-copy-id [email protected]
[root@ansible ~] ssh-copy-id [email protected]
[root@client1 ~] ssh 192.168.1.12 #测试一下,没有问题
Last login: Fri Jul 14 09:36:20 2023 from 192.168.1.108
[root@ansible ~] exit
登出
[root@client1 ~] ssh 192.168.1.134
Last login: Fri Jul 14 09:37:07 2023 from 192.168.1.108
[root@client2 ~] exit
登出
1、inventory是Ansible管理主机信息的配置文件,相当于系统的Hosts文件功能,默认存放在/etc/ansible/hosts。在hosts文件中通过分组来组织设备,Ansible通过inventory来定义主机和分组,通过ansible命令中是用选项-i或者--inventory-file指定inventory。
[root@ansible ~] cp /etc/ansible/hosts{,.bak}
[root@ansible ~] vim /etc/ansible/hosts
[Rich] #自己起个名字
192.168.1.133
192.168.1.134
[root@ansible ~]# ansible -i /etc/ansible/hosts Rich -m ping
192.168.1.133 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.1.134 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
2、配置完成后可以针对hosts定义服务组件进行远程操作,也可以针对组中的指定的某一个或多个主机操作,下面接收如何针对特定的服务器操作
1)针对Rich组中的192.168.200.112主机操作,通--limit参数限定主机的变更
[root@ansible ~] ansible Rich -m command -a "head -5 /etc/passwd"
192.168.1.133 | CHANGED | rc=0 >>
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
192.168.1.134 | CHANGED | rc=0 >>
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
2)只对192.168.200.0网段主机进行操作。通过通配符限定主机变更
[root@ansible ~] ansible 192.168.1.* -m command -a "head -5 /etc/passwd"
192.168.1.133 | CHANGED | rc=0 >>
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
192.168.1.134 | CHANGED | rc=0 >>
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1、Ansible的维护命令大多以ansible开头,在终端输入ansible后连续按两次tab键,会补全所有以ansible字母开头的命令。
[root@ansible ~] ansible
anaconda-ks.cfg .bash_logout .cshrc .tcshrc
.ansible/ .bash_profile .pki/ .viminfo
.bash_history .bashrc .ssh/
[root@ansible ~] ansible-
ansible-2 ansible-doc-2 ansible-playbook-2.7
ansible-2.7 ansible-doc-2.7 ansible-pull
ansible-config ansible-galaxy ansible-pull-2
ansible-connection ansible-galaxy-2 ansible-pull-2.7
ansible-console ansible-galaxy-2.7 ansible-vault
ansible-console-2 ansible-inventory ansible-vault-2
ansible-console-2.7 ansible-playbook ansible-vault-2.7
ansible-doc ansible-playbook-2
Ansible是生产环境中使用非常频繁的命令之一,主要在以下场景应用
语法:ansible
常用:
ansible ansible-console ansible-doc-2.7 ansible-playbook ansible-pull-2.7
ansible-2 ansible-console-2 ansible-galaxy ansible-playbook-2 ansible-test
ansible-2.7 ansible-console-2.7 ansible-galaxy-2 ansible-playbook-2.7 ansible-vault
ansible-config ansible-doc ansible-galaxy-2.7 ansible-pull ansible-vault-2
ansible-connection ansible-doc-2 ansible-inventory ansible-pull-2
可用选项如下
举例
检查所有主机是否存活
[root@ansible ~] ansible all -f 5 -m ping
192.168.1.134 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.1.133 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
列出Rich组中所有主机列表
[root@ansible ~] ansible Rich --list-host
hosts (2):
192.168.1.133
192.168.1.134
批量显示Rich组中的磁盘使用情况
[root@ansible ~] ansible Rich -m command -a "df -Th"
192.168.1.133 | CHANGED | rc=0 >>
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.8G 16G 11% /
/dev/sda1 xfs 1014M 195M 820M 20% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
192.168.1.134 | CHANGED | rc=0 >>
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 9.6M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.9G 16G 11% /
/dev/sda1 xfs 1014M 195M 820M 20% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/sr0 iso9660 9.5G 9.5G 0 100% /media/cdrom
语法ansible-doc [options] [module......]
ansible-doc用来查询ansible模块文档的说明,类似于man命令,针对每个模块都有详细的用法说明及应用案例介绍
[root@ansible ~]# ansible-doc -l #查看总帮助
[root@ansible ~]# ansible-doc -s shell #查看shell模块的帮助
[root@ansible ~]# ansible-doc -s raw
1)列出支持的模块
[root@ansible ~] ansible-doc -l
fortios_router_community_list Configure commun...
azure_rm_devtestlab_info Get Azure DevTes...
ecs_taskdefinition register a task ...
avi_alertscriptconfig Module for setup...
tower_receive Receive assets f...
2)查询ping模块的说明信息
root@ansible ~] ansible-doc ping #=ansible-doc -s ping
> PING (/usr/lib/python2.7/site-packages/ansible/modules/system/ping.py)
A trivial test module, this module always returns `pong' on successful contact. It
does not make sense in playbooks, but it is useful from `/usr/bin/ansible' to verify
语法:ansible-playbook playbook.yml
Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux系统中的sh或source命令,用来执行系列任务,其工作机制是,通过读取编写好的playbook文件实现集中处理任务,ansible-playbook命令后跟yml或者yaml格式的playbook文件,playbook文件存放了要执行的任务代码
ansible-console是ansible为用户提供的一款交互式工具,类似于Windows中的cmd以及Linux中的shell,用户可以在ansible-console虚拟出来的终端上做像shell一样使用ansible内置的各种命令,这为习惯于使用shell交互方式的用户提供了良好的体验,在终端输入ansible-console命令后显示如下
[root@ansible ~] ansible-console
Welcome to the ansible console.
Type help or ? to list commands.
root@all (2)[f:5]$ cd Rich
root@Rich (2)[f:5]$ list
192.168.1.133
192.168.1.134
root@Rich (2)[f:5]$ exit