playbook里如果一个命令想让他无论正确还是错误都继续执行可以使用 cat /root/dlow || /bin/true cat /root/dlow ignore_errors:True ··········
--list-host查看主机列表 ··········
--limit ip 只对这个主机执行
·········
-vvvv 查看详细信息
·········
-C 测试 ·······
notify通知 handlers触发 有变动想改变 ········· tags:跟在action后面使用,标签 命令行调用为ansible-playbook -t tagsname xx.yml 多个标签用,隔开 多个action可以共用一个标签 ········· {{ 变量名 }} 命令行赋值可以用-e '变量名=xxx' 多个变量用空格隔开 ·········· 在playbook中直接定义变量 vars:
- 变量名1:值1
- 变量名2:值2
··········· 变量还可以在hosts文件定义 跟在ip后面直接定义 还可以 [组名:vars] 直接定义 优先级是命令行大于单个主机大于组定义 ············ 变量还可以是一个单独的文件 vars_files: - vars.yml
playbook里这么调用 ········ [root@ansible ansible-test]# cat vars.yml var1: ding
文件里面这么设置变量 ········· template模板 模板里也可以引用变量 既有通用性也有灵活性 ········· when语句可以做控制 ········· {{ item }} with_items:
- xx
- xx
- xx
迭代 ··········· {{ item.name }} {{ item.banji }} with_items: -- { 'name': 'ding','banji':'3'} 迭代嵌套 ·········· ports: 列表 可以是字符串也可以是字典
-
x - 'x1':'1' - 'y2':'2'
-
x
-
x ··········· 模板里定义for循环 {% for i in ports %} i就是变量,ports是定义好的列表
{% endfor %} ············ {% for i in ports %} {% if x is defiend %} 循环里嵌套判断 {% endif %} {% endfor%}
roles/
├── httpd
├── memcache
├── mysql
└── nginx
├── tasks
│ ├── group.yml
│ ├── main.yml
│ ├── restart.yml
│ ├── service.yml
│ ├── templ.yml
│ ├── user.yml
│ └── yum.yml
└── templates
└── nginx.conf.j2
roles角色,可以将多个要做的事分开,主配playbook里只需调用即可
- hosts: 192.168.3.61
remote_user: root
roles:
- role: nginx
`````