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
    `````