zoukankan      html  css  js  c++  java
  • ansible playbook基本操作

    一、ansible playbook简单使用

    相当于是把模块写入到配置文件里面

    vim /etc/ansible/test.yml //写入如下内容:

    ---
    - hosts: 127.0.0.1
      remote_user: root
      tasks:
        - name: test_playbook
          shell: touch /tmp/test.txt

    PS: 第一行是固定写法,hosts指定对哪些主机进行操作,如果是多台可以用逗号分隔,也可以使用主机组,如testhost

    user参数指定使用什么用户登录远程机器

    tasks指定一个任务,name为对任务的描述,执行过程中会打印出来,shell是ansible模块名字,执行test.yml

    ansible-playbook test.yml

    二、playbook设置变量

    vim /etc/ansible/create_user.yml  //创建一个用户:

    ---
    - name: create_user
      hosts: 127.0.0.1
      user: root
      gather_facts: false
      vars:
        - user: "test"  
      tasks:
        - name: create user
          user: name="{{ user }}"

    PS: name参数对该playbook做一个描述,可以省略;gather_facts参数指定在以下任务部分执行前,是否执行setup模块获取主机相关信息;vars参数,指定变量,这里指定一个user变量,值为test,值一定要用引号引住;

    tasks里面的user为一个模块,下面的name为user模块的一个参数,增加的用户名字调用了上面user变量的值。

    三、playbook循环

    vim /etc/ansible/while.yml  //创建文件以及修改权限:

    ---
    - hosts: 127.0.0.1
      user: root
      gather_facts: false
      tasks:
        - name: touch files and change mode for files
          file: path=/tmp/{{ item }} state=touch mode=600
          with_items:
            - 1.txt
            - 2.txt
            - 3.txt

    PS: with_items为循环的对象

    四、playbook中的条件判断

    vim /etc/ansible/when.yml  //写入如下内容:

    ---
    - hosts: testhost
      user: root
      gather_facts: True
      tasks:
        - name: user when
          shell: touch /tmp/when.txt
          when: ansible_eno16777736.ipv4.address=="192.168.1.99"

    PS: 只有满足when里面的条件时,才会去执行shell里面的内容;ansible 127.0.0.1 -m setup可以查看所有facter信息,即when里面条件在这里面去设置。

    五、playbook中的handlers(tasks满足条件之后才执行)

    vim /etc/ansible/handlers //写入如下内容:

    ---
    - name: handlers test
      hosts: 127.0.0.1
      user: root
      tasks:
        - name: copy file
          copy: src=/etc/passwd dest=/tmp/aaa.txt
          notify: test handlers
      handlers:
        - name: test handlers
          shell: echo "1111" >> /tmp/aaa.txt

    PS:只有当copy模块真正执行后,才会去调用下面handlers相关操作,copy与notify的顺序没有关系;如果aaa.txt与passwd内容是一样的,就不会去执行handlers里面的shell命令。适用于配置文件发生更改后重启服务的操作。

  • 相关阅读:
    【11_83】Remove Duplicates from Sorted List
    【10_169】Majority Element
    【09_242】Valid Anagram
    【08_238】Product of Array Except Self
    【07_226】Invert Binary Tree
    【6_100】Same Tree
    【5_283】Move Zeroes
    【4_237】Delete Node in a Linked List
    mysql性能优化-慢查询分析、优化索引和配置
    生成商品条形码代码事例
  • 原文地址:https://www.cnblogs.com/654wangzai321/p/8045998.html
Copyright © 2011-2022 走看看