ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Ansible playbook 入门

2020-03-15 21:00:09  阅读:257  来源: 互联网

标签:文件 入门 角色 handlers ansible yaml Ansible playbook


    ansible playbook 是一门自动化运维的编程语言,顺序、条件、循环等操作,使用yaml格式实现,playbook配置文件类似于shell脚本。

    1. yaml语法

        YAML语法结构通过缩进来展示,通过“-”来代表项;“:”用来分隔键和值;整个文件以“---”开头,并以“...”结尾,如下所示:

        

        所有的“-”和“:”后面均有空格,而且注意缩进和对齐。

        playbook的核心元素包含:

  • hosts:任务的目标主机,多个主机用冒号分隔,一般调用/etc/ansible/hosts中的分组信息;

  • remote_user:远程主机上,运行此任务的默认身份为root;

  • tasks:任务,即定义的具体任务,由模块定义的操作列表;

  • handlers:触发器,类似tasks,只是在特定的条件下才会触发的任务。某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers进行触发执行;

  • roles:角色,将hosts剥离出去,由tasks、handlers等所组成的一种特定的结构集合。

      playbook文件定义的任务需要通过ansible-playbook命令进行调用并执行。语法结构如下:          

      ansible-playbook [options]  /PATH/TO/PLAYBOOK.yaml

      [option]部分的功能包括:

                 --syntax-check:检测yaml文件的语法;

                 -C(--check):预测试,不会改变目标主机的任何设置

                 --list-hosts:列出yaml文件影响的主机列表

                 --list-tasks:列出yaml文件的任务列表

                 --list-tags:列出yaml文件中的标签

                 -t TAGS(--tags=TAGS):表示只执行指定标签的任务

                 --skip-tags=SKIP_TAGS:表示除了指定标签的任务,执行其他任务

                 --start-at-task=START_AT:从指定的任务开始往下运行;

 

       通常情况下先执行ansible-playbook -C /PATH/TO/PLAYBOOK.yaml命令进行测试,测试没问题后再执行ansible-playbook /PATH/TO/PLAYBOOK.yml命令

测试执行playbook.yaml结果:

     ansible-playbook /etc/ansible/test.yaml

       远程连接192.162.146.128主机查看是否成功执行了任务:

       ssh root@192.168.146.128 tail -1 /etc/passwd

       ssh root@192.168.146.128 ls -rlt /home

    2. 触发器

        需要触发才能执行的任务,当之前定义在tasks中的任务执行成功后,若希望在此基础上触发其他任务,这时就需要定义handlers。例如:例如,当通过ansible的模块对目标主机的配置文件进行修改之后,如果任务执行成功,可以触发一个触发器,在触发器中定义目标主机的服务重启操作,以使配置文件生效。

       handlers触发器具有以下特点:

       1). handlers是Ansible提供的条件机制之一。handlers和task很类似,但是它只在被task通知的时候才会触发执行.

       2).   handlers只会在所有任务执行完成后执行。而且即使被通知了很多次,它也只会执行一次。handlers按照定义的顺序依次执行。

      handlers触发器的使用示例如下:

      cat /etc/ansible/httpd.yaml

 

      执行任务:

      ansible-playbook -C /etc/ansible/httpd.yaml  

      ansible-playbook /etc/ansible/httpd.yaml

   远程连接主机查看结果:

 3. 角色

     将多种不同的tasks的文件集中存储在某个目录下,则该目录就是角色。角色一般存放在/etc/ansible/roles/目录,可通过ansible的配置文件来调整默认的角色目录,/etc/ansible/roles/目录下有很多子目录,其中每一个子目录对应一个角色,每个角色也有自己的目录结构。

    tree /etc/ansible/roles/

    

    web:web角色

    mariadb:mariadb角色

     每个角色的定义,以特定的层级目录结构进行组织,角色的文件结构如下:

     files/:此角色中用到的所有文件均放置于此目录中
     templates/: 模板文件存放位置
     tasks/:任务列表文件;可以有多个,但至少有一个叫做main.yml的文件
     handlers/:处理器列表文件;可以有多个,但至少有一个叫做main.yml的文件
     vars/:变量字典文件;可以有多个,但至少有一个叫做main.yml的文件
     meta/:此角色的特殊设定及依赖关系

    有了角色后,可以直接在yaml文件(playbook配置文件)中调用角色,例如:

    

    可以只调用一个角色,也可以调用多个角色,当定义了角色后,用ansible-playbook PALYBOOK文件执行即可。此时ansible会到角色集合的目录(/etc/ansible/roles)去找web和mariadb目录,然后依次运行web和mariadb目录下的所有代码

    4. 实战:安装及配置mariadb数据库的实例

    需求分析:

  • 要求被管理主机上自动安装mariadb,安装完成后上传提前准备好的配置文件至远端主机,重启服务,然后新建testdb数据库,并允许test用户对其拥有所有权限。

  • 被管理主机配置yum仓库,自行配置,若被管理端可以连接互联网,那么直接将yum仓库指向互联网即可。

   在ansible服务器上实施:

       创建任务文件:      

        触发器文件:

      files文件:

    创建PLAYBOOK.yml文件

执行mariadb.yml

      安装完成后,在远端主机上测试:

标签:文件,入门,角色,handlers,ansible,yaml,Ansible,playbook
来源: https://www.cnblogs.com/jiawei2527/p/12499966.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有