目录
一、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特点
- Ansible基于python开发,运维工程师对其二次开发相对容易
- Ansible拥有丰富的内置模块,基本可以满足一切要求
- 管理模式非常简单,一条命令可以影响上千台机器
- 无客户端模式设计,底层基于SSH通信
- Ansible发布后也陆续被AWS,Google,Cloud Platfrom,Microsoft Azure,Cisco,HP,VMware,Twitter等大公司接纳并投入使用
二、ansible应用
Ansible工具集合了inventory,Moudles,Plugins和API。其中,inventory用来管理设备列表,可以通过分组(不同的业务)实现,对组的调用直接影响组内所有的主机;Moudles是各种执行模块,几乎所有的管理任务都是通过模块来执行的;Plugins提供了各种附加功能;API为编程人员提供了一个调用接口,可以做Ansible的二次开发具体表现如下:
- Ansible Playbook:任务脚本,编排定义Ansible任务集的配置文件,由Ansible按序依次执行,通常是JSON格式的YML/YAML文件;
- inventory:Ansible管理主机清单
- Moudle:Ansible执行命令功能模块,多数为内置的核心模块也可以用户自定义;
- Plugins:模块功能的补充,如连接类型插件,循环插件,变量插件,过滤插件等,该功能不常用。
- API:提供第三方程序调用的应用程序编程接口;
三、ansible搭建
1、 实验环境,准备三台服务器,关闭防火墙
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
2、在ansible(192.168.1.12)服务器上yum安装ansible
[root@ansible ~] yum -y install epel-release
[root@ansible ~] yum -y install ansible
3、创建ssh免交互登录
[root@ansible ~] ssh-keygen -t rsa
[root@ansible ~] ssh-copy-id root@192.168.1.133
[root@ansible ~] ssh-copy-id root@192.168.1.134
[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
登出
四、ansible配置
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
五、ansible命令
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
1)ansible
Ansible是生产环境中使用非常频繁的命令之一,主要在以下场景应用
- 非固化需求
- 临时一次性操作
- 二次开发接口调用语法ansible <host-pattern> [options]
语法:ansible <host-pattern> [options]
常用:
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
可用选项如下
- -v(--verbose):输出详细的执行过程信息,可以得到执行过程所有信息
- -i PATH(inventory=PATH):指定inventory信息,默认为/etc/ansible/hosts
- -f NUM(--forks=NUM):并发线程数,默认为5个线程
- --private-key=PRIVATE_KEY_FILE:指定密钥文件
- -m NAME,--moudle-name=NAME:指定执行时使用的模块
- -M DIRECTORY(--module-path=DIRECTORY):指定模块存放路径,默认为/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认目录
- -a ARGUMENTS(--args=ARGUMENTS):指定模块参数
- -u USERNAME(--user=USERNAME):指定远程主机USERNAME运行命令
- -l subset(--limit=SUBSET):限定运行主机
- --list-hosts:列出符合条件的主机列表,不执行任何命令
举例
检查所有主机是否存活
[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
- Rich需要提前在/etc/ansible/hosts文件中定义组
- Ansible的返回结果非常友好,一般会用三种颜色执行结果:红色,绿色和橘黄色,其中红色表示执行过程中有异常,橘黄色表示命令执行后目标有状态变化,绿色表示执行成功且没有对目标机器做修改
2)ansible-doc
语法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
3)ansible-playbook
语法:ansible-playbook playbook.yml
Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux系统中的sh或source命令,用来执行系列任务,其工作机制是,通过读取编写好的playbook文件实现集中处理任务,ansible-playbook命令后跟yml或者yaml格式的playbook文件,playbook文件存放了要执行的任务代码文章来源:https://www.toymoban.com/news/detail-570681.html
4) ansible-console
ansible-console是ansible为用户提供的一款交互式工具,类似于Windows中的cmd以及Linux中的shell,用户可以在ansible-console虚拟出来的终端上做像shell一样使用ansible内置的各种命令,这为习惯于使用shell交互方式的用户提供了良好的体验,在终端输入ansible-console命令后显示如下文章来源地址https://www.toymoban.com/news/detail-570681.html
[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
到了这里,关于ansible特点、工具合集、搭建、命令合集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!