1. ansible
ansible通过SSH实现配置管理、应用部署、任务执行等功能,配置ansible端基于密钥认证的方式联系各被管理节点,用于执行临时性的工作。
用法:ansible <host-pattern> [options]
| [options]选项 | 意义 |
| -a ‘args’ | 模块参数 |
| --version | 显示版本 |
| -m MODULE_NAME | 指定模块,默认为command |
| -v | 详细过程,-vv,-vvv更详细 |
| -s | 相当于linux下的sudo命令 |
| --list-hosts | 显示主机列表,可简写--list |
| -k | 提示输入SSH连接密码,默认Key验证 |
| -K | 提示输入sudo时的口令 |
| -C | 检查,并不执行 |
| -T | 执行命令的超时时间 |
| -u REMOTE_USER | 执行远程执行的用户 |
| -b | 代替旧版的sudo切换 |
| -f | 并发线程数,默认5 |
1.1 举例
(1)列出所有主机列表
[root@CentOS7 ~]# ansible all --list-hosts
(2)检测websrvs组是否存活
[root@CentOS7 ~]# ansible websrvs -m ping
1.2 ansible的host-pattern
(1)全量(all)匹配
[root@CentOS7 ~]# ansible all -m ping #匹配所有主机,all与*号功能相同。如检测所有主机存活情况
[root@CentOS7 ~]# ansible "*" -m ping #匹配所有主机,all与*号功能相同。如检测所有主机存活情况
[root@CentOS7 ~]# ansible 192.168.73.* -m ping #检查192.168.73.0/24网段所有主机存活情况
(2)逻辑或(:)匹配
用“:”冒号表示同时对多台主机或多个组同时执行。
[root@CentOS7 ~]# ansible "websrvs:dbsrvs" -m ping
(3)逻辑与(:&)匹配
主要针对多重条件的复杂组合。
[root@CentOS7 ~]# ansible 'websrvs:&dbsrvs' -m ping #在websrvs组和dbsrvs组同时存在的所有主机
(4)逻辑非(:!)匹配
主要针对多重条件的匹配规则。
[root@CentOS7 ~]# ansible 'websrvs:!dbsrvs' -m ping #在websrvs组但不在dbsrvs组的所有主机
(5)综合逻辑
支持多条件的复杂组合
[root@CentOS7 ~]# ansible 'websrvs:dbsrvs:&appsrvs:!ftpsrvs' -m ping #在websrvs组和dbsrvs两个组中的所有主机在appsrvs组中存在且在ftpsrvs组中不存在的主机
(6)域切割
ansible底层基于Python,因此也支持切割。如:
[websrvs]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110
websrvs[0] #==alpha.example.org
websrvs[0:1] #==alpha.example.org,beta.example.org
(7)正则表达式
ansible支持完整正则匹配,“~表示”开始正则匹配。
[root@CentOS7 ~]# ansible "~(web|db)srvs" -m ping #检测websrvs、dbsrvs的存活情况
1.3 ansible命令执行过程
- 加载自己的配置文件
- 加载自己对应的模块文件,如command
- 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.py文件
- 给文件+x执行
- 执行并返回结果
- 删除临时py文件,sleep 0退出
1.4 Ansible执行状态
- 绿色:执行成功并且不需要做出任何改变
- 黄色:执行成功并且对目标主机做出变更
- 红色:执行失败
- 蓝色:显示详细过程
- 紫色:显示警告
2.ansible-doc
ansible模块的文档说明。针对每个模块,都有详细的说明
用法:ansible-doc [options] [module]
| OPTIONS | 描述 |
| -a | 显示所有模块的文档 |
| -l,--list | 列出可用模块 |
| -s | 显示指定模块的playbook片段 |
[root@CentOS7 ~]# ansible-doc -l | wc -l #统计Ansible模块的数量
1378
[root@CentOS7 ~]# ansible-doc -s script #查看script模块的帮助文档
- name: Runs a local script on a remote node after transferring it
script:
chdir: # cd into this directory on the remote node before
running the script
creates: # a filename, when it already exists, this step will
*not* be run.
decrypt: # This option controls the autodecryption of source files
using vault.
free_form: # (required) Path to the local script file followed by
optional arguments.
There is no parameter
actually named 'free
form'; see the examples!
removes: # a filename, when it does not exist, this step will
*not* be run.
3.ansible-playbook
通过读取预先编写好的playbook文件实现批量管理。要实现的功能与命令ansible一样,相当于按一定条件组成的ansible任务集
用法:ansible-playbook [options] playbook.yml
[root@CentOS7 ~]# vim hello.yml
---
- hosts: all
remote_user: root
tasks:
- name: hello
command: hostname
#执行playbook剧本
[root@CentOS7 ~]# ansible-playbook hello.yml
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.146.122]
ok: [192.168.146.112]
ok: [192.168.146.111]
TASK [hello] *******************************************************************
changed: [192.168.146.112]
changed: [192.168.146.122]
changed: [192.168.146.111]
PLAY RECAP *********************************************************************
192.168.146.111 : ok=2 changed=1 unreachable=0 failed=0
192.168.146.112 : ok=2 changed=1 unreachable=0 failed=0
192.168.146.122 : ok=2 changed=1 unreachable=0 failed=0
4.ansible-vault
主要用于配置文件管理(加密解密),如编写的playbook配置文件中包含敏感信息,不希望其他人随意查看。
用法:ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]
ansible-vault encrypt vaultfile.yml:加密playbook文件
ansible-vault decrypt vaultfile.yml:解密playbook文件
ansible-vault view vaultfile.yml:查看加密文件
ansible-vault edit vaultfile.yml:编辑加密文件
ansible-vault create vaultfile.yml:创建新playbook文件
ansible-vault rekey vaultfile.yml:修改口令
5.ansible-galaxy
连接https://galaxy.ansible.com下载相应的roles
用法:ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...
ansible-galaxy list:列出所有已安装的galaxy
ansible-galaxy install geerlingguy.nginx:安装galaxy
ansible-galaxy delete geerlingguy.nginx:删除galaxy
6.ansible-pull
推送命令至远程,效率无限提升
7.ansible-console
ansible-console是ansible为用户提供的一款交互式工具,用户可以在ansible-console虚拟出来的终端上向shell一样使用ansible内置的各种命令。
7.1 进入虚拟终端

root@all (3)[f:5]$
执行用户@当前操作的主机组(当前组的数量)[f:并发数]$
7.2 虚拟终端常用命令
列出当前组主机列表:list
切换组/主机:cd 主机组/主机
设置并发数:forks n
列出所有内置命令:?或help
退出虚拟终端:exit
root@all (3)[f:5]$ shell echo $HOSTNAME
192.168.146.111 | SUCCESS | rc=0 >>
s1
192.168.146.122 | SUCCESS | rc=0 >>
Client
192.168.146.112 | SUCCESS | rc=0 >>
Server2
本文详细介绍了Ansible的常用命令,包括列举主机列表、host-pattern的各种匹配方式,如全量、逻辑或、逻辑与、逻辑非及正则表达式匹配。还提及了ansible-doc、ansible-playbook、ansible-vault等高级功能,以及ansible执行过程和执行状态的说明。此外,还涵盖了ansible-galaxy的角色下载和ansible-console的虚拟终端操作。
2345

被折叠的 条评论
为什么被折叠?



