ansible 安装
1. git安装
1 | git clone git://github.com/ansible/ansible.git --recursive |
2. yum/apt 安装
1 | # yum install -y epel-release |
3. pip 安装
1 | yum install python3-pip python3-devel |
确认安装
1 | root@DESKTOP-R0OV00O:/etc/ansible# ansible --version |
ansible 相关文件
1 | /etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性 |
ansible.cfg 详解
1 | [defaults] |
inventory 主机清单示例
1 | [k8s] |
ansile 主要命令
1 | /usr/bin/ansible 主程序,临时命令执行工具 |
ansible 命令执行过程
- 加载自己的配置文件默认
/etc/ansible/ansible.cfg - 加载自己对应的模块文件,如:
command - 通过
ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件 - 给文件
+x执行 - 执行并返回结果
- 删除临时
py文件,退出
实战
配置无秘登录192.168.100[1:200]
1 | #!/bin/bash |
Playbook核心元素
Hosts: 执行的远程主机列表Tasks: 任务集Variables: 内置变量或自定义变量在playbook中调用Templates: 模板,可替换模板文件中的变量并实现一些简单逻辑的文件Handlers和notify结合使用 : 由特定条件触发的操作,满足条件方才执行,否则不执行tag: 标签, 指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。此时,如果确信其没有变化,就可以通过tags跳过此些代码片断
templetes
roles
roles 就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地 include 它们的一种机制。角色一般用于基于主机构建服务的场景
每个角色,以特定的层级目录结构进行组织
roles 目录结构:1
2playbook.yml
roles/ project/ tasks/ files/ vars/ templates/ handlers/ default/ meta/
Roles 各目录作用:
1 | roles/project : 项目名称 |
roles 的目录结构:
1 | nginx-role.yml |
- hosts:websrvs
remote_user:root
roles:
-{role:nginx,tags:[‘nginx’,’web’],when:ansible_distribution_major_version==”6“}-{role:httpd,tags:['httpd','web']}-{role:mysql,tags:['mysql','db']} -{role:mariadb,tags:['mariadb','db']}`
执行
ansible-playbook --tags="nginx,httpd,mysql" nginx-role.yml