ansible流程
ansible通过ssh方式访问服务器并执行管理操作的,首先需要在ansible服务器上通过key-gen命令生成密钥对,并将公钥(id_rsa.pub)拷贝到被管理服务器.ssh目录下的authorized_keys文件里,可以通过ssh-copy-id命令发送。
配置完成后,通过ssh命令验证免密登陆:ssh root@192.168.0.1。
ansible安装比较简单,其配置文件为:/etc/ansible.cfg,管理的服务器列表为:/etc/ansible/host。配置完成后通过ping命令验证:ansible all -m ping。
ansible命令及模块操作参考:
https://www.cnblogs.com/keerya/p/7987886.htmlansible-tower
ybalt/ansible-tower将依赖包都配置好了,直接启动即可:
docker pull ybalt/ansible-tower
docker run -p 32233:443 --name tower ybalt/ansible-tower
浏览器访问tower,用户密码为:admin/password
https://localhost:32233
- tower配置
首先tower是docker化配置的,需要将步骤1中的私钥(id_rsa)拷贝一份到容器的.ssh目录下,或者重新生成密钥对进行配置。
具体配置流程如下:
- 授权配置:登陆目标机器的授权方式,可以是ssh免密,也可以是用户密码方式。如果执行的ansible代码托管在git上,还需要添加一个读取git的授权。
- PROJECTS:工程配置,及需要执行的ansible脚本工程,可以是本地导入,也可以是git仓库。本地默认目录为:/var/lib/awx/projects。如果是git仓库,需要选择上一步配置的git授权。
- INVENTORIES:资源配置,及被管理的机器列表。添加相应的hosts,可以配置自定义参数。
- TEMPLATES:模版配置,及真正执行的任务列表。从上述配置好的PROJECTS中选择要执行的任务,并制定具体的脚步。从INVENTORIES中选择哪些机器要执行,以及机器对应的授权选择。
完成TEMPLATES配置后就可以执行,也可以配置定时执行计划。
配置参考:
https://kionf.com/2018/11/21/tower-useage/
- 遇到问题
- module_stdout": "/bin/sh: 1: /usr/bin/python: not found
确认ansible服务器和目标机器是否都有:/usr/bin/python
参考:https://www.cnblogs.com/zoujiaojiao/p/13993363.html - [WARNING]: Could not match supplied host pattern, ignoring:test_host
通过playbook编写任务时,找不到host,在playbook中将host配置为all:
- hosts: all
- RuntimeError: bubblewrap is not installed
提示找不到bubblewrap,在设置(SETTINGS/ EDIT CONFIGURATION/JOBS)里面将任务隔离(ENABLE JOB ISOLATION)关掉,参考:
https://docs.ansible.com/ansible-tower/3.8.0/html_zh/administration/proot_func_variables.html