zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Ansible相关工具介绍,实例演示

实例工具 介绍 相关 演示 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 ping 
ansible

此工具通过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 -K
ansible-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 world
ansible-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=started
ansible-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