zoukankan      html  css  js  c++  java
  • ansible playbook相关

    playbook(剧本)

    格式

    playbook的编写应遵循yaml格式的语法

    列表 -
    字典 k:v
    后缀名为 .yaml 或 .yml
    
    # 简单示例
    - hosts: web  # 主机ip/分组名
      remote_user: root  # 用户身份
      tasks:
      - name: installlxml   # 任务名
        pip: name=lxml  # 使用的模块: 参数
    
    # 注: 执行时使用ansible-playbook  xx.yml
    

    传参

    # 1. 直接给playbook传参
    - hosts: web
      remote_user: root
      tasks:
      - name: installl{{ module_name }}
        pip: name={{ module_name }}
    
    # 2. 在playbook中以vars方式传参
    - hosts: web
      remote_user: root
      vars:
      - module_name: requests
      tasks:
      - name: installl{{ module_name }}
        pip: name={{ module_name }}
    
    # 注: 执行时使用ansible-playbook -e module_name xx.yml
    
    
    # 3. 在/etc/ansible/hosts 文件中传参
    [web]
    192.168.80.128 module_name=requests
    192.168.80.129 module_name=flask
    
    # 注: 执行时使用ansible-playbook  xx.yml
    
    
    # 4. 在/etc/ansible/hosts 文件中以[分组名:vars]方式传参
    [web]
    192.168.80.128
    192.168.80.129
    [web:vars]
    module_name=requests
    
    # 5. 利用上次任务的结果传值
    - hosts: web
      remote_user: root
      tasks:
      - name: sum
        shell: echo 2+2|bc
        register: user
    
      - name: create{{ user }}
        user: name=nihao{{ user.stdout }}
    
    # 注: 执行时使用ansible-playbook  xx.yml
    # 需要先进行 yum -y install bc 操作
    
    
    # 五种传参方式的优先级
    -e > vars > hosts
    

    标签

    # 只执行playbook中部分内容
    
    - hosts: web  # 主机ip/分组名 
      remote_user: root  # 用户身份 tasks:
      tasks:
      - name: installlxml   # 任务名
        pip: name=lxml  # 使用的模块: 参数
        tags: 标签名
    
    # 注: 执行时使用ansible-playbook -t 	标签名 xx.yml
    

    模板

    - hosts: web
      remote_user: root
      tasks:
      - name: install
        yum: name=reids
        tags: install
      - name: copyfile
        template: src=redis.conf.j2 dest=/etc/redis.conf
        tags: copyfile
      - name: startredis
        service: name=redis state=started
        tags: start
    
    # 注:redis.conf.j2文件是一个包含jinja2语法的redis.conf文件,通过配合template完成根据主机ip, 动态设置redis.conf中bind ip
    # redis.conf.j2
    bind {{ ansible_default_ipv4.address }}
    

    条件判断

    - hosts: web  # 主机ip/分组名 
      remote_user: root  # 用户身份 tasks:
      tasks:
      - name: installlxml   # 任务名
        pip: name=lxml  # 使用的模块: 参数
        when: num==1  # 条件判断,因为when语法原因不需要写成{{ num }} == 1
    
    # 注: 执行时使用ansible-playbook  xx.yml
    

    循环

    # 循环创建nihao, hello, hah三个用户
    - hosts: web  # 主机ip/分组名 
      remote_user: root # 用户身份 tasks:
      tasks:
      - name: createUser # 任务名
        user: name={{ item }}
        with_items:
        - nihao
        - hello
        - hah
    
    # 注: 执行时使用ansible-playbook  xx.yml
    
    
    # 创建用户并指定组
    - hosts: web  # 主机ip/分组名 
      remote_user: root # 用户身份 tasks:
      tasks:
      - name: creategroup
        group: name={{ item.group }}
      - name: createUser # 任务名
        user: name={{ item.name }} group={{ item.group }}
        with_items:
        - { name: nihao, group: niao}
        - { name: hello, group: hello}
        - { name: hah, group: hah}
    

    handler

    - hosts: cache
      remote_user: root
      tasks:
      - name: install
        yum: name=redis
        tags: install
      - name: copyfile
        template: dest=/etc/redis.conf src=redis.conf.j2
        tags: copyfile
        notify: restart redis  # 此任务执行完后,执行handler
      - name: startredis
        service: name=redis state=started
        tags: start
      handlers:
      - name: restart redis
        service: name=redis state=restarted
    
    
  • 相关阅读:
    CentOS7下Elastic Stack 5.0日志分析系统搭建
    ElasticSearch 简单入门
    简单使用packetbeat
    centos7没有安装ifconfig命令的解决方法
    CentOS系统下docker的安装与卸载
    centos7 cannot find a valid baseurl for repo base
    HP P2xxx/MSA SMI-S Provider
    Zookeeper 的学习与运用
    kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
    利用开源架构ELK构建分布式日志系统
  • 原文地址:https://www.cnblogs.com/tmdhhl/p/11135616.html
Copyright © 2011-2022 走看看