ansible主要组成部分
user: 普通用户,即system administrator
cmdb: 配置管理数据库,api调用
public/private cloud api调用
user -》 ansible playbook -》 ansible
利用 ansible实现管理的方式
ad-hoc 即ansible命令 主要用于临时使用场景
ansible-playbook主要用于长期规划好的,大型项目的场景,需要有前提的规划
ansible-playbook剧本执行流程
1,将已有的编排好的任务集写入 ansible-book
2,通过ansible-playbook命令分拆任务集至每条ansible命令,按预定的规则执行
ansible主要操作对象
1 host主机
2 networking网络设备
注意事项:
执行ansible的主机一般为主控端,中控, master或者堡垒机
主控端 python 版本需要2.6以上
被控端python 版本小于2.4需要安装python-simplejson
被控端如开启selinux 需要安装 libselinux-python
windows 不能做为主控端
ansible的用法
ansible通过ssh实现配置管理,应用部署,任务执行等功能,建议配置ansbile端能基于密钥认证的方式联系各被管理的节点
ansible <host-pattern> [-m module_name] [-a args]
--version 显示版本
-m module 指定模块, 默认为command
-v 详细过程 -vv -vvv更详细
-k --ask-pass 提示输入ssh连接密码 默认key验证
--list-hosts 显示主机列表 可简写 --list
-K --ask-become-pass 提示输入sudo时的口令
-C --check 检查 并不执行
-T --timeout=TIMEOUT 执行命令超时时间
-u --user=REMOTE_USER 执行远程执行的用户
-b --become 代替旧版的sudo切换
ansible-doc -s 模块名 即列出模块的使用详情
ansible 基于key验证
key验证
ssh-keygen
ssh-copy-id 192.168.30.101
ansible的Host-pattern
ansible的Host-pattern 匹配主机的列表 ALL:表示所有inventory中的所有主机 ansible all -m ping * 通配符
ansible "*" -m ping
ansible 192.168.1.* -m ping
ansible 命令执行过程
ansible 命令执行过程
1 加载自己的配置文件 默认 /etc/ansible/ansible.cfg
2 加载自己对应的模块文件 如command
3 通过ansible将模块或者命令生成的临时py文件,并将该文件传送至远端服务器的对应执行用户 $HOME/.ansible/tmp/ansible-tem-数字/xxx.py文件
4 给文件+x执行
5 执行并返回结果
6 删除临时py文件 ,sleep 0退出
执行状态
绿色:执行成功并且不需要改变的操作
黄色:执行成功并且需要对目标主机变更
红色:执行失败
ansible command 通过参数 a执行命令
ansible webgroup -a ‘chdir=/home mkdir aaa‘ chdir=/home 切换到home目录下 创建一个aaa 的文件
ansible webgroup -a ‘df -h‘ # 查看 主机分组中的 内存配置
ansible webgroup -a ‘chmod +x /home/tang.py‘ # 给文件加执行权限
ansible shell 模块
ansible webgroup -m shell -a ‘echo $HOSTNAME‘ # 参数要放在单引号中
ansible script 模块 运行脚本
ansible webgroup -m script -a ‘/root/host.sh‘
host.sh
#! /bin/bash hostname
返回详情
103.100.208.80 | CHANGED => { "changed": true, "rc": 0, "stderr": "Shared connection to 103.100.208.80 closed.\r\n", "stderr_lines": [ "Shared connection to 103.100.208.80 closed." ], "stdout": "lalala\r\n", "stdout_lines": [ "lalala" ] }
ansible copy 模型
ansible webgroup -m copy ‘src=/root/ansible/selinux dest=/etc/selinux/config backup=yes‘ backup=yes 是备份的意思
原文:https://www.cnblogs.com/tangda/p/14536701.html