您好,欢迎来到站长目录(28sn.com)!


Ansible Playbook详解

来源:网络整理 浏览:341次 时间:2022-06-30

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 等等;

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net
  • 今题网今题网

     今题网- 中国领先的社区服务网,提供社区服务, 在线交友和商家推广服务,于2004年创建上线,公司现有员工超过百名。今题网自成立以来,凭借其独特的定位和丰富的社区交友功能, 凭借其团队超强的搜索引擎优化技术吸引超过千万的用户成为今题网的注册会员。

    www.jinti.com

鄂公网安备 42062502000001号