ansible————playbook

一、playbook和ad hoc命令

ad hoc命令是单行,一个简单的任务,运行一次。ansible真正强大的地方是使用ansible的playbook重复运行多次复杂的任务。

一个play是是一组有序的任务,该paly对应着在inventory被选择的主机。一个playbook是一个包含若干个paly的text文本文件。

plays让你将又长又复杂的管理任务变的简单。在palybook中,你可以用易懂和立即能运行的格式将tasks保存在play中。tasks本身由于书写方式的原因,就是一个一部一部部署你的架构或者应用的文档

二、playbook的格式

playbook通常被定义为扩展名为yml的文件。playbook主要使用空格字符来指定它的数据结构。 YAML没有严格的需求,不强制要求多少个空格。但是有两个基本规则:

  • 数据元素在同级必须有同样的缩进

  • 一个对象是另一个对象的子对象时必须比父对象缩进更多

注意:只有空格可以使用,不能用tab。如果你使用vim编辑器,你可以通过在你的家目录下创建.vimrc文件,并且添加"autocmd FileType yaml setlocal ai ts=2 sw=2 et"来将tab变成两个空格。

bash 复制代码
---                                          ## 表示剧本开始
- name: this is my first play                ## 第一个play的名字
  hosts: hostname                            ## 被管理主机
  remote_user:                               ## 使用那个用户来执行,优先级最高
  become: yes                                ## 是否提权,前提是该用户拥有能够提权的操作
  tasks:                                    
    - name: create a new user                ## task的名字
      user:                                  ## 执行的模块
        name: nana                           
        state: present

三、写一个简单的playbook

bash 复制代码
[root@control ansible_manage]# cat play_book/first.yml 
---                                          ## 表示剧本开始
- name: this is my first play                ## 第一个play的名字
  hosts: manage3                             ## 被管理主机
  tasks:                                    
    - name: create a new user                ## task的名字
      user:                                  ## 执行的模块
        name: nana                           
        state: present

级别上play大于task大于module,平级缩进要一样

这个playbook,只有一个play,这个play的被管理主机是manage3,里面有一个task,这个task的名字叫做"create a new user"。这个task使用的user模块,创建了nana用户

运行playbook

bash 复制代码
[root@control ansible_manage]# ansible-playbook play_book/first.yml

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************
ok: [manage3]
TASK [create a new user] *******************************************************************************************changed: [manage3]
PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

四、playbook的详细输出

运行的时候显示详细信息

  • -v

  • -vv:常用

  • -vvv

  • -vvvv

bash 复制代码
## 不加-v
[root@control ansible_manage]# ansible-playbook play_book/remove_nana_user.yaml

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************ok: [manage3]

TASK [create a new user] *******************************************************************************************changed: [manage3]

PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

## 加一个-v
[root@control ansible_manage]# ansible-playbook play_book/remove_nana_user.yaml -v
Using /root/ansible_manage/ansible.cfg as config file

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************ok: [manage3]

TASK [create a new user] *******************************************************************************************ok: [manage3] => {"changed": false, "name": "nana", "state": "absent"}    ## 多了这一行

PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

## 加-vv
[root@control ansible_manage]# ansible-playbook play_book/remove_nana_user.yaml -vv
ansible-playbook [core 2.14.9]
  config file = /root/ansible_manage/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.18 (main, Sep  7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/usr/bin/python3) 
  jinja version = 3.1.2
  libyaml = True
Using /root/ansible_manage/ansible.cfg as config file
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: remove_nana_user.yaml ************************************************************************************1 plays in play_book/remove_nana_user.yaml

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************task path: /root/ansible_manage/play_book/remove_nana_user.yaml:2
ok: [manage3]

TASK [create a new user] *******************************************************************************************task path: /root/ansible_manage/play_book/remove_nana_user.yaml:5
ok: [manage3] => {"changed": false, "name": "nana", "state": "absent"}

PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

假装运行,只是模拟运行,但是实际上没有执行

  • -C
相关推荐
tyatyatya10 小时前
Ansible自动化配置,从入门到实战
运维·自动化·ansible
lbb 小魔仙2 天前
【Linux】Ansible 自动化运维实战:2000+ 节点配置标准化教程
linux·运维·ansible
扑火的小飞蛾4 天前
【Ansible学习笔记01】 批量执行 shell 命令
笔记·学习·ansible
oMcLin4 天前
如何在 Red Hat Linux 服务器上使用 Ansible 自动化部署并管理多节点 Hadoop 集群?
linux·服务器·ansible
linux修理工7 天前
vagrant ubuntu 22.04 ansible 配置
ubuntu·ansible·vagrant
biubiubiu07068 天前
Ansible自动化
运维·自动化·ansible
秋4279 天前
ansible配置与模块介绍
ansible
秋4279 天前
ansible剧本
linux·服务器·ansible
码农101号10 天前
Ansible - Role介绍 和 使用playbook部署wordPress
android·ansible
2301_8000509912 天前
Ansible
运维·ansible