标签:png 批量部署 工作 使用 运维工具 学习 必须 cts 化运维
Ansible 是一个配置管理和应用部署工具,只需要通过 ssh 访问服务器或设备即可实现批量系统配置、程序部署、运行命令等功能。
Ansible 是基于模块工作的,本身没有批量部署的能力,真正具有部署能力的是 Ansible 所运行的模块。
Ansible 的优点:
Ansible 的基本架构:
Ansible 有三种安装方式:
1. yum 安装:
yum -y install ansible wget -O /etc/yum.repos.d/epel.repo
2. pip 安装:
pip install ansible
3. github 安装:
git clone git://github.com/ansible/ansible.git --recursive cd ./ansible make rpm sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
常用配置文件或命令 | 描述 |
/etc/ansible/ansible.cfg | 主配置文件,配置ansible工作特性 |
/etc/ansible/hosts | 主机清单 |
/etc/ansible/roles/ | 存放角色的目录 |
/usr/bin/ansible | 主程序,临时命令执行工具 |
/usr/bin/ansible-doc | 查看配置文档,模块功能查看工具 |
/usr/bin/ansible-playbook | 定制自动化任务,编排剧本工具 |
/usr/bin/ansible-pull | 远程执行命令的工具 |
功能: 尝试连接到主机,ping 通则返回 pong 。
功能: 远程执行命令,如果 ansible 不指定模块时,默认使用 command 模块。
功能: 远程执行命令,类似于 command 。
功能: 复制文件或目录到远程节点,默认覆盖目标文件,源地址为 src , 目的地址为 dest 。
功能: 设置远程节点文件的文件属性。其中, mode 参数定义文件或目录的权限。 path 定义文件或目录的路径,为必选项。
功能: 收集远程主机的信息,playbook 中的参数 gather_facts 就与该模块有关,后续 playbook 做介绍。
功能: 自定义消息失败,在 playbook 中一般与 参数 when 结合使用。
Ansible playbook 采用 yaml 语言编写, playbook 的第一行 “---” 符号表示这是一个 yaml 文件。
playbook 的工作流程如下图所示:
hosts: hosts 行的内容是一个或多个组主机的 patterns ;
remote_user: 远程执行任务的账户名;
tasks: 任务集,由多个 task 组成;
until: until 是一个条件表达式,如果满足条件循环结束;
retry:retry 是重试的次数;
delay:延迟时间;
local_action: Ansible 默认只会对控制机器执行操作,local_action 参数使得 ansible 对本机执行操作;
2. ansible hosts 中定义的变量,分为普通变量和公共变量,普通变量在主机组中主机单独定义,优先级高于公共变量。
3. 通过命令行指定变量,优先级最高。
4. 在 playbook 中定义变量:
5. vars_file 指定变量文件。
6. 在 role 中定义。
7. 通过 {{ variable_name }} 调用变量,且变量名前后必须有空格。
8. register 注册变量,把某一条任务执行的结果保存下来,在接下来的任务中调用该变量或者用该变量做判断:
将 task execute script at local host 的执行结果存入变量 host_data_json 中,在任务 fail ansible 中使用该变量中的 stderr 进行判断该任务会不会出错。
host_data_json 变量如下图 localhost => 右边的结构体所示,注意使用该结构体的 rc 参数进行判断也是可以的,即 host_data_json.rc == 0:
简单的 playbook 例子:
--- - hosts: [any] remote_user: "root" gather_facts: yes vars: number: "1" tasks: - name: ping the OAM ping: - name: ping the local host local_action: ping - name: change the mode of file local_action: file path=/tmp/test_mode.sh mode=0777 - name: execute script at local host local_action: command /bin/bash /tmp/test_mode.sh 1 2 register: host_data_json - name: fail ansible local_action: fail msg="can‘t run ansible playbook" when: host_data_json.stderr != ""
参考文章:
https://www.jianshu.com/p/575ced3a08fa
http://blog.51cto.com/191226139/2066936
http://blog.51cto.com/amyhehe/1718050
http://blog.51cto.com/faded/1762688
标签:png 批量部署 工作 使用 运维工具 学习 必须 cts 化运维
原文地址:https://www.cnblogs.com/xingzheanan/p/9751787.html