快捷搜索:  汽车  科技

Ansible学习(AnsiblePlaybook超详细讲解值得收藏)

Ansible学习(AnsiblePlaybook超详细讲解值得收藏)it@workstation:~/ansible$ vim test.yml it@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: a

Ansible学习(AnsiblePlaybook超详细讲解值得收藏)(1)

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.yml it@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 -l a10_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 apt apt 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 Team OPTIONS (= 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 等等

后面会分享更多ansible、k8s、docker等方面内容,感兴趣的朋友可以关注下!

Ansible学习(AnsiblePlaybook超详细讲解值得收藏)(2)

*特别声明:本文为【怕水的鱼】投稿,仅代表作者观点。马哥教育仅提供信息发布平台。

点击了解更多,阅读《一文详解 Ansible 变量》

猜您喜欢: