Ansible(二)如何在多台主机上批量执行任务

Ansible(二)如何在多台主机上批量执行任务,第1张

Ansible批量执行任务有两种方式 adhoc 和 playbook ,当执行简单的命令时,可以使用 adhoc ,当执行复杂的命令,涉及多个模块/条件等时,建议使用 playbook

ansible 的底层是 python ,但是我们在使用 ansible 的时候不需要写 python 脚本,而是直接调用模块即可。

模块是由红帽官方或者其他合作伙伴或开发爱好者开发好的脚本,我们可以通过调用模块,来执行对应的命令。

ansible-doc -l

ansible-doc ping

ansible" host-pattern" -m "module" -a"module argument" -i "inventroy-path"

playbook 是一个 yaml 格式的文件,后缀名为 .yml 或者 .yaml

在一个 playbook 文件中,可以包含多个 play

一个 play 就是要在指定主机中执行的一系列 *** 作,在一个 play 中可以指定 hosts (在哪些主机上执行)和 tasks (执行哪些命令)

tasks 中可以包含多个 task ,每个 task 就是对一个模块的调用

ansible-playbook webserver.yml -e "user=root"

Playbook通常是幂等的,即同一个playbook,无论运行多少次,最终的结果都是一样的。如果被控主机之前已经进行了更改,那么再次运行playbook的时候不会进行变更。

以下是一个 playbook 的执行结果示例

TASK 的执行结果

2020-10-29

通过创建yaml文件创建用户,playbook模式,编写useradd.yaml写入以下内容(注意格式,该对齐的地方要对齐,要不然会报错)

- hosts: test  #组名

  tasks:

    - name: create user

      user:

        name: "{{ item.user }}"

        password: "{{ 'item.pass' | password_hash('sha512') }}"    #采用哈希加密

        state: present

      loop:

        - { user: user1, pass: 123}

        - { user: user2, pass: 456}

        - { user: user3, pass: 789}

执行:[root@docker lxt]# ansible-playbook useradd.yml

#######################并没有什么卵用的分割线######################

批量删除用户,步骤同上,编辑一个userdel.yaml文件

- hosts: test

   tasks:

    - name: delete user

      user:

        name: "{{ item.user }}"

        password: "{{ 'item.pass' | password_hash('sha512') }}"    #采用哈希加密

        state: absent  #缺少

        remove: yes

      loop:

        - { user: user1}

        - { user: user2}

        - { user: user3}

执行:[root@docker lxt]# ansible-playbook userdel.yml

1、打开记事本,编写dos命令。 2、保存为.bat文件。 3、通过dos命令框打开运行.bat文件文件就可以了。 .bat: 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11815861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存