Ansible相关工具介绍,实例演示
2023-06-13 09:15:42 时间
/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于Console界面与用户交互的执行工具
利用ansible实现管理的主要方式:
Ad-Hoc 即利用ansible命令,主要用于临时命令使用场景 Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前期的规划过程 ansible-doc此工具用来显示模块帮助
格式
ansible-doc [options] [module...] -l, --list #列出可用模块 -s, --snippet #显示指定模块的playbook片段
范例:
#列出所有模块 ansible-doc -l #查看指定模块帮助用法 ansible-doc ping #查看指定模块帮助用法 ansible-doc -s pingansible
此工具通过ssh协议,实现对远程主机的配置管理、应用部署、任务执行等功能
建议:使用此工具前,先配置ansible主控端能基于密钥认证的方式联系各个被管理节点
范例:利用sshpass批量实现基于key验证
#!/bin/bash ssh-keygen -f /root/.ssh/id_rsa -P NET=192.168.100 export SSHPASS=magedu for IP in {1..200};do sshpass -e ssh-copy-id NET.IP done
格式:
ansible host-pattern [-m module_name] [-a args]
选项说明:
--version #显示版本 -m module #指定模块,默认为command -v #详细过程 –vv -vvv更详细 --list-hosts #显示主机列表,可简写 --list -k, --ask-pass #提示输入ssh连接密码,默认Key验证 -C, --check #检查,并不执行 -T, --timeout=TIMEOUT #执行命令的超时时间,默认10s -u, --user=REMOTE_USER #执行远程执行的用户 -b, --become #代替旧版的sudo 切换 --become-user=USERNAME #指定sudo的runas用户,默认为root -K, --ask-become-pass #提示输入sudo时的口令
ansible的Host-pattern
用于匹配被控制的主机的列表
All :表示所有Inventory中的所有主机
范例
ansible all –m ping
*:通配符
ansible “*” -m ping ansible 192.168.1.* -m ping ansible “srvs” -m ping
或关系
ansible “websrvs:appsrvs” -m ping ansible “192.168.1.10:192.168.1.20” -m ping
逻辑与
#在websrvs组并且在dbsrvs组中的主机 ansible “websrvs: dbsrvs” –m ping
逻辑非
#在websrvs组,但不在dbsrvs组中的主机 #注意:此处为单引号 ansible ‘websrvs:!dbsrvs’ –m ping
综合逻辑
ansible ‘websrvs:dbsrvs: appsrvs:!ftpsrvs’ –m ping
正则表达式
ansible “websrvs:dbsrvs” –m ping ansible “~(web|db).*/.magedu/.com” –m ping
ansible命令执行过程
1.加载自己的配置文件 默认/etc/ansible/ansible.cfg
2.加载自己对应的模块文件,如:command
3.通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
4.给文件+x执行
5.执行并返回结果
6.删除临时py文件,退出
ansible 的执行状态:
[root@centos8 ~]#grep -A 14 /[colors/] /etc/ansible/ansible.cfg [colors] #highlight = white #verbose = blue #warn = bright purple #error = red #debug = dark gray #deprecate = purple #skip = cyan #unreachable = red #ok = green #changed = yellow #diff_add = green #diff_remove = red #diff_lines = cyan绿色:执行成功并且不需要做改变的操作 黄色:执行成功并且对目标主机做变更 红色:执行失败
ansible使用范例
#以wang用户执行ping存活检测 ansible all -m ping -u wang -k #以wang sudo至root执行ping存活检测 ansible all -m ping -u wang -k -b #以wang sudo至mage用户执行ping存活检测 ansible all -m ping -u wang -k -b --become-user=mage #以wang sudo至root用户执行ls ansible all -m command -u wang -a ls /root -b --become-user=root -k -Kansible-playbook
此工具用于执行编写好的 playbook 任务
范例:
ansible-playbook hello.yml cat hello.yml #hello world yml file - hosts: websrvs remote_user: root tasks: - name: hello world command: /usr/bin/wall hello worldansible-vault
此工具可以用于加密解密yml文件
格式:
ansible-vault [create|decrypt|edit|encrypt|rekey|view]
范例
ansible-vault encrypt hello.yml #加密 ansible-vault decrypt hello.yml #解密 ansible-vault view hello.yml #查看 ansible-vault edit hello.yml #编辑加密文件 ansible-vault rekey hello.yml #修改口令 ansible-vault create new.yml #创建新文件ansible-console
此工具可交互执行命令,支持tab,ansible 2.0+新增
提示符格式:
执行用户@当前操作的主机组 (当前组的主机数量)[f:并发数]$
常用子命令:
设置并发数: forks n 例如: forks 10 切换组: cd 主机组 例如: cd web 列出当前组主机列表: list 列出所有的内置命令: ?或help范例
[root@ansible ~]#ansible-console Welcome to the ansible console. Type help or ? to list commands. root@all (3)[f:5]list 10.0.0.8 10.0.0.7 10.0.0.6 root@all (3)[f:5] cd websrvs root@websrvs (2)[f:5]list 10.0.0.7 10.0.0.8 root@websrvs (2)[f:5] forks 10 root@websrvs (2)[f:10]cd appsrvs root@appsrvs (2)[f:5] yum name=httpd state=present root@appsrvs (2)[f:5]$ service name=httpd state=startedansible-galaxy
此工具会连接 https://galaxy.ansible.com 下载相应的roles
范例:
#列出所有已安装的galaxy ansible-galaxy list #安装galaxy ansible-galaxy install geerlingguy.mysql ansible-galaxy install geerlingguy.redis #删除galaxy ansible-galaxy remove geerlingguy.redis
本文链接:http://www.yunweipai.com/34643.html
52624.html
AnsiblecentosmysqlRedis