伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

Ansible Playbook详解

来源:本站原创 浏览:72次 时间:2022-07-01

Playbook 是一个由一个或多个 play 组成的文件;play 是针对特定主机或主机组执行的一组有序的任务;每个 playbook 必须包含两部分:

hosts: 运行 playbook 的一组主机

tasks: 需要在主机上运行的任务

除了这两个必须选项,还有一些可选项选项,也可能需要包含在 play 中,如:

name: play 的名称,在运行该 play 时,会在运行过程中显示。

become: 与配置文件中的 become 作用一样,用于提权,当配置文件中禁用提权时,你想要某个 play 使用提权的话,你可以在 play 中添加 become。

playbook 以 yaml 格式编写的,通常以 yml 扩展名保存。yaml 格式使用空格缩进,对于空格的数量没有特别要求,但需要注意:

  • 同一级别内的元素必须使用相同的缩进;
  • 对于子项目,缩进必须比父项目多

编写 playbook

it@workstation:~/ansible$ vim test.ymlit@workstation:~/ansible$ cat test.yml---- name: Install Apache  hosts: servera  tasks:    - name: Install apache httpd      apt:        name: apache2        state: present    - name: Copy using inline content      copy:        content: Welcome to        dest: /var/www/html/index.html    - name: Start apache service      service:        name: apache2        state: started        enabled: yes

Playbook 以 --- 开头,用于标记文件开始;

第二行的 name 为该 play 的名称;

第三行的 hosts 表示将要运行该 play 的主机;

第四行的 tasks 表示该 play 将要执行的具体任务;

通过缩进,我们可以看出 tasks 一共分为三个部分,也就是三个模块,每个模块由一个 name 开表示该模块的 name,虽然 name 是可选选项,但建议写上,用来作为对该模块执行任务的解释说明,并且 name 的内容会在 playbook 执行此模块时,显示在执行过程中;

name 下面的是模块的名称,在该 play 的 tasks 中一共有三个模块:

apt: 用于安装软件

copy: 用于复制文件或内容

service: 用于操作 service,如启动服务,重启服务等

我们可以通过 ansible-doc 来获取更多关于模块的信息:

我们可以通过 ansible-doc -l 来列出所有模块

t@workstation:~/ansible$ ansible-doc -la10_server                                    Manage A10 Networks AX/SoftAX/Thu...a10_server_axapi3                             Manage A10 Networks AX/SoftAX/Thu...a10_service_group                             Manage A10 Networks AX/SoftAX/Thu...a10_virtual_server                            Manage A10 Networks AX/SoftAX/Thu...aci_aaa_user                                  Manage AAA users (aaa:User)      ... ... ... ...... ... ... ...

列出的内容太多,我们可以通过 grep 进行筛选:如,我想查找关于 apt 相关的模块

it@workstation:~$ ansible-doc -l | grep aptapt                                                           Manages apt-packages             apt_key                                                       Add or remove an apt key         apt_repo                                                      Manage APT repositories via apt-r...apt_repository                                                Add and remove APT repositories  apt_rpm                                                       apt_rpm package manager          fortios_switch_controller_security_policy_captive_portal      Names of VLANs that use captive p...na_ontap_qos_adaptive_policy_group                            NetApp ONTAP Adaptive Quality of ...na_ontap_ucadapter                                            NetApp ONTAP UC adapter configura...nios_naptr_record                                             Configure Infoblox NIOS NAPTR rec...skydive_capture                                               Module which manages flow capture...vmware_guest_network                                          Manage network adapters of specif...                            

通过 ansible-doc Module_Name 获取模块相关的帮助说明

it@workstation:~$ ansible-doc apt> APT    (/usr/lib/python3/dist-packages/ansible/modules/packaging/os/apt.py)        Manages `apt' packages (such as for Debian/Ubuntu).  * This module is maintained by The Ansible Core TeamOPTIONS (= is mandatory):- allow_unauthenticated        Ignore if packages cannot be authenticated. This is useful for        bootstrapping environments that manage their own apt-key setup.        `allow_unauthenticated' is only supported with state:        `install'/`present'        [Default: no]        type: bool        version_added: 2.1... ... ... ...... ... ... ...

执行 playbook

it@workstation:~/ansible$ ansible-playbook test.yml BECOME password: PLAY [Install Apache] ******************************************************************************TASK [Gathering Facts] *****************************************************************************ok: [servera]TASK [Install apache httpd] ************************************************************************changed: [servera]TASK [Copy using inline content] *******************************************************************changed: [servera]TASK [Start apache service] ************************************************************************ok: [servera]PLAY RECAP *****************************************************************************************servera                    : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

由于我们配置了 become,所以在运行的时候会提示输入 become 密码;

在这里,我们可以看到前面说的,在执行过程中会显示 play 的名称,告诉你现在执行的是那个 play;

每个 play 中会有一个默认的任务,就是获取 facts 信息,在 facts 信息中会保存你计算机的系统信息;

然后是三个在 play 中定义的 task,在执行 tasks 时,会显示当前所执行的 task 的名称,以及执行的状态,如果是 ok,则表示系统状态没有任何更改,如果是 changed,则表示系统状态发生了改变;

在最后,还有一个关于该 playbook 执行结果的汇总,有多少个 changed,有多少个 failed,有多个 skipped 等等;

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net