zoukankan      html  css  js  c++  java
  • Ansible学习记录五:PlayBook学习

    0.介绍

         Playbooks 是 Ansible 管理配置、部署应用和编排的语言,可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等

         类似于一组任务集,定义好像项目,组织结构,配置文件等信息,通过task将所要做的事情一步一步的组织在一起就是完整的Playbook

      官方Demo资料:https://github.com/ansible/ansible-examples

      Playbooks是采用YMAL语言结构,基础语法请参考:http://docs.ansible.com/ansible/YAMLSyntax.html

      一个完整的Playbooks结构,以部署tomcat为例:

        tomcat/   ------>  tomcat的playbook

        ├── hosts    -------->    指定安装tomcat的机器清单(Inventory)

        ├── roles    ------>  子项清单 (可以有一项或多项的任务)

        │   └── tomcat    ----> 安装tomcat

        │       ├── files   ---> 存放文件

        │       │   ├── apache-tomcat-7.0.64.tar.gz    ----> tomcat安装包

        │       │   ├── jdk-7u79-linux-x64.tar.gz     -----> jdk安装包

        │       │   └── tomcat    ------>tomcat服务启动脚本

        │       └── tasks   ------>任务项清单

        │           ├── jdk.yml     ---> jdk任务列表

        │           ├── main.yml    --->  任务入口

        │           └── tomcat.yml    ---->tomcat任务列表

        ├── site.yml    ansible playbook执行入口

        ├── tomcat.sh   批量安装shell.

        └── tomcat-testing.sh   tomcat安装测试脚本

      Ansible roles 完整示例:

        root@node1 playbook]# tree  roles/

        roles/ \ansible所有的信息都放到此目录下面对应的目录中

        └── nginx  \角色名称

            ├── default  \为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件

            ├── files  \存放有copy或script等模块调用的文件

            ├── handlers \此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler

            ├── meta \应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持

            ├── tasks \至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令

            ├── templates \template模块会自动在此目录中寻找Jinja2模板文件

            └── vars  \应当包含一个main.yml文件,用于定义此角色用到的变量

    1.项目结构介绍

      Playbook中的属性介绍:

        name    表示playbook 的名称

        hosts    表示执行的机器清单

        connection:允许你指定ssh parmiko或者local这三种传输方式

        gather_facts:默认每次连接都会执行setup,如果不需要用到变量可以制定这个字段为now

        remote_user :  远程端执行的用户

        tasks:   定义执行的任务清单,顺序执行

        templates :  存放模板文件

        vars:  存放变量

        handlers:  定义以后回调的方法

        file: 存放复制的安装文件,比如安装文件等

    2.PlayBook示例

      安装ftp服务:

      ---

          - hosts: test

            remote_user: root

            tasks:

             - name: install ftp

               command: yum -y install ftp

    3.其他

      3.1 首次连接或者重装系统之后会出现检查 keys 的提示

        The authenticity ofhost '192.168.0.5 (192.168.0.5)' can't be established.

        ECDSA key fingerprint is 05:51:e5:c4:d4:66:9b:af:5b:c9:ba:e9:e6:a4:2b:fe.

        Are you sure you want to continue connecting (yes/no)?

      解决办法:

        vim /etc/ansible/ansible.cfg 或者 ~/.ansible.cfg

        [defaults]

        host_key_checking = False

        也可以通过设置系统环境变量来禁止这样的提示

        export ANSIBLE_HOST_KEY_CHECKING=False

      3.2 在使用 paramiko 模式时,主机 keys 的检查会很慢

      3.3 默认情况下 Ansible 会记录一些模块的参数等信息到每个被控端的 syslog 日志文件里,除非在任务或者剧本里设置了 no_log: True 会不记录日志

     4.参考记录

          Ansible-Playbook

      http://www.178linux.com/7001

        集群运维ansible的playbook配置及template模板的使用

      http://www.tuicool.com/articles/UvU3ai

      http://rfyiamcool.blog.51cto.com/1030776/1413031

      Playbook Roles and Include Statements

      http://docs.ansible.com/ansible/playbooks_roles.html

  • 相关阅读:
    命令拷屏之网络工具
    PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 LeetCode 143 重排链表
    Java实现 LeetCode 143 重排链表
  • 原文地址:https://www.cnblogs.com/LuisYang/p/6004702.html
Copyright © 2011-2022 走看看