ວິທີການສ້າງເຄື່ອງຫຼີ້ນແລະປື້ມຫຼີ້ນທີ່ສາມາດຕອບໄດ້ - ສ່ວນທີ 5


ໃນພາກທີ 5 ຂອງຊຸດ Ansible ນີ້, ພວກເຮົາຈະອະທິບາຍວິທີການສ້າງ Anss Plays ແລະ Playbook ໂດຍໃຊ້ໂມດູນ Ansible.

ເຮືອທີ່ມີ ຄຳ ຕອບພ້ອມດ້ວຍສະຄິບແບບ ລຳ ເຊທີ່ເອີ້ນວ່າໂມດູນທີ່ຖືກ ນຳ ໃຊ້ໃນປື້ມຫຼີ້ນ ສຳ ລັບການປະຕິບັດວຽກງານພິເສດກ່ຽວກັບຂໍ້ຫ່າງໄກ.

ໂມດູນແມ່ນມີປະໂຫຍດ ສຳ ລັບວຽກງານອັດຕະໂນມັດເຊັ່ນການຈັດການແພັກເກັດ, ການຈັດເກັບເອກະສານແລະການຄັດລອກແຟ້ມເອກະສານເພື່ອກ່າວເຖິງສອງສາມຢ່າງ. ພວກເຂົາເຈົ້າອະນຸຍາດໃຫ້ທ່ານສາມາດ tweaks ໃນເອກະສານການຕັ້ງຄ່າແລະຈັດການອຸປະກອນຕ່າງໆເຊັ່ນ: routers, switch, load balancers, firewalls ແລະເຈົ້າຂອງອຸປະກອນອື່ນໆ.

ຈຸດປະສົງຂອງ subtopic ນີ້ແມ່ນເພື່ອໃຫ້ທ່ານເບິ່ງພາບລວມຂອງວຽກງານຕ່າງໆທີ່ສາມາດເຮັດໄດ້ໂດຍໂມດູນ Ansible:

ການຄຸ້ມຄອງການຫຸ້ມຫໍ່ໃນ Linux

ການຄຸ້ມຄອງແພັກເກັດແມ່ນ ໜຶ່ງ ໃນ ໜ້າ ວຽກທີ່ ຈຳ ເປັນແລະເລື້ອຍໆທີ່ປະຕິບັດໂດຍຜູ້ບໍລິຫານລະບົບ. ເຮືອທີ່ຕອບໄດ້ພ້ອມດ້ວຍໂມດູນທີ່ຊ່ວຍໃຫ້ທ່ານປະຕິບັດວຽກງານການຈັດການຊຸດທັງໃນລະບົບ RedHat ແລະ Debian.

ພວກເຂົາຂ້ອນຂ້າງງ່າຍທີ່ຈະຄາດເດົາ. ມີໂມດູນທີ່ ເໝາະ ສົມ ສຳ ລັບການຈັດການແພັກເກັດ APT ສຳ ລັບ Debian based, ໂມດູນ yum ເກົ່າ ສຳ ລັບການຈັດການຊຸດ YUM ແລະໂມດູນ dnf ທີ່ກ່ຽວຂ້ອງກັບການແຈກຈ່າຍ RHEL ທີ່ ໃໝ່ ກວ່າ.

ຂ້າງລຸ່ມນີ້ແມ່ນບາງຕົວຢ່າງຂອງວິທີທີ່ໂມດູນສາມາດຖືກ ນຳ ໃຊ້ໃນປື້ມຫຼີ້ນ:

---
- name: install Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         dnf:  
          name: httpd  
          State: latest
---
- name: install Apache webserver
  hosts: databases

  tasks:
       - name: install Apache webserver
         apt:  
          name: apache2  
          State: latest

ໂມດູນການບໍລິການ

ໂມດູນການໃຫ້ບໍລິການຊ່ວຍໃຫ້ຜູ້ເບິ່ງແຍງລະບົບເລີ່ມຕົ້ນ, ຢຸດ, ປັບປຸງ, ຍົກລະດັບແລະໂຫຼດບໍລິການໃນລະບົບ.

---
- name: Start service httpd, if not started
  service:
    name: httpd
    state: started
---
- name: Stop service httpd
  service:
    name: httpd
    state: stopped
---
- name: Restart network service for interface eth0
  service:
    name: network
    state: restarted
    args: enp2s0

ໂມດູນ ສຳ ເນົາ

ດັ່ງທີ່ຊື່ແນະ ນຳ, ສຳ ເນົາເອກະສານ ສຳ ເນົາແບບໂມດູນຈາກສະຖານທີ່ ໜຶ່ງ ໃນເຄື່ອງຫ່າງໄກສອກຫຼີກໄປຫາສະຖານທີ່ອື່ນໃນເຄື່ອງດຽວກັນ.

---
- name: Copy file with owner and permissions
  copy:
    src: /etc/files/tecmint.conf
    dest: /srv/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: '0644'

ປື້ມບັນທຶກ ສຳ ເນົາເອກະສານ config tecmint.conf ຈາກ/etc/files/directory ຫາ/srv/directory ໃນຖານະຜູ້ໃຊ້ tecmint ມີສິດ 0644.

ການອະນຸຍາດຍັງສາມາດເປັນຕົວແທນໂດຍໃຊ້ຕົວແທນສັນຍາລັກດັ່ງທີ່ສະແດງຢູ່ໃນເສັ້ນສຸດທ້າຍ.

---
- name: Copy file with owner and permissions
  copy:
    src: /etc/files/tecmint.conf
    dest: /srv/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: u=rw, g=r, o=r

ການອະນຸຍາດໃນຕົວຢ່າງທີ່ຜ່ານມາສາມາດເປັນຕົວແທນດັ່ງທີ່ສະແດງຢູ່ໃນເສັ້ນສຸດທ້າຍ, ຜູ້ໃຊ້ໄດ້ຖືກມອບ ໝາຍ ສິດອະນຸຍາດໃຫ້ອ່ານແລະຂຽນ, ກຸ່ມໄດ້ຖືກມອບ ໝາຍ ສິດອະນຸຍາດໃຫ້ຂຽນ, ແລະສ່ວນທີ່ເຫຼືອຂອງໂລກແມ່ນຖືກມອບ ໝາຍ ໃຫ້ອະນຸຍາດໃຫ້ອ່ານ.

ໂມດູນແຟ້ມເອກະສານ

ໂມດູນເອກະສານຖືກ ນຳ ໃຊ້ເພື່ອ ດຳ ເນີນການປະຕິບັດງານຂອງເອກະສານຫຼາຍຢ່າງລວມທັງການສ້າງແຟ້ມເອກະສານ & ໄດເລກະທໍລີ, ການມອບ ໝາຍ ການອະນຸຍາດເອກະສານແລະການຕັ້ງຄ່າ symlinks.

---
- name: Change file ownership, group, and permissions
  file:
    path: /etc/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: '0644'

ການຫຼີ້ນຂ້າງເທິງນີ້ສ້າງແຟ້ມເອກະສານທີ່ເອີ້ນວ່າ tecmint.conf ໃນ/etc ການຕັ້ງຄ່າໄດເລກະທໍລີອະນຸຍາດເຖິງ 0644.

---
- name: Remove file (delete file)
  file:
    path: /etc/tecmint.conf
    state: absent

ສິ່ງນີ້ເອົາຫຼືລຶບ tecmint.conf.

---
- name: create a directory if it doesn’t exist
  file:
    path: /etc/mydirectory
    State: directory
    mode: '0777'

ນີ້ຈະສ້າງໄດເລກະທໍລີໃນອະນຸຍາດການຕັ້ງຄ່າໄດເລກະທໍລີ/etc ຕໍ່ 0777.

---
- name: Recursively deleting a  directory
  file:
    path: /etc/tecmint.conf
    state: absent

ການຫຼີ້ນຂ້າງເທິງລຶບບັນດາທິດທາງ.

ໂມດູນ Lineinfile

ໂມດູນ lineinfile ແມ່ນມີປະໂຫຍດເມື່ອທ່ານຕ້ອງການປ່ຽນເສັ້ນດຽວໃນເອກະສານ. ມັນສາມາດທົດແທນສາຍທີ່ມີຢູ່ແລ້ວ.

---
 - name: Ensure SELinux is set to enforcing mode
  lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: SELINUX=disabled

ການຫຼີ້ນຂ້າງເທິງ ກຳ ນົດຄ່າ SELINUX ໃຫ້ກັບຄົນພິການ.

SELINUX=disabled
---
- name: Add a line to a file if the file does not exist, without         passing regexp
  lineinfile:
    path: /etc/hosts
    line: 10.200.50.51 linux-console.net
    create: yes

ນີ້ເພີ່ມການເຂົ້າ 10.200.50.51 linux-console.net ໃສ່ແຟ້ມ/etc/hosts.

ໂມດູນຮວບຮວມ

ໂມດູນການຮວບຮວມແມ່ນໃຊ້ ສຳ ລັບການສ້າງເອກະສານເກັບມ້ຽນຂອງແຟ້ມເອກະສານດຽວຫລືຫຼາຍເອກະສານ. ມັນຄາດວ່າແຫຼ່ງຂໍ້ມູນທີ່ບີບອັດມີຢູ່ໃນສະຖານທີ່ເປົ້າ ໝາຍ. ຫຼັງຈາກເກັບຂໍ້ມູນແລ້ວ, ເອກະສານແຫຼ່ງຂໍ້ມູນສາມາດຖືກລຶບຫຼືລຶບອອກຫຼັງຈາກນັ້ນໂດຍໃຊ້ ຄຳ ສັ່ງ remove = True .

- name: Compress directory /path/to/tecmint_dir/ into /path/to/tecmint.tgz
  archive:
    path: /path/to/tecmint_dir
    dest: /path/to/tecmint.tgz

This compresses the /path/to/tecmint_dir  directory to /path/to/tecmint.tgz
- name: Compress regular file /path/to/tecmint into /path/to/foo.gz and remove it
  archive:
    path: /path/to/tecmint
    dest: /path/to/tecmint.tgz
    remove: yes

ໃນການຫຼີ້ນຂ້າງເທິງ, ເອກະສານແຫຼ່ງ/ເສັ້ນທາງ/ຫາ/tecmint ຖືກລຶບຖິ້ມຫຼັງຈາກການຮວບຮວມ ສຳ ເລັດ.

- name: Create a bz2 archive of /path/to/tecmint
  archive:
    path: /path/to/tecmint
    format: bz2

ນີ້ສ້າງໄຟລ໌ທີ່ຖືກບີບອັດໃນຮູບແບບ bz2 ຈາກໄຟລ໌/path/to/tecmint.

ໂມດູນ Git

ໂມດູນຄຸ້ມຄອງການກວດສອບ git ຂອງຫໍສະ ໝຸດ ຊອບແວ.

- git:
    repo: 'https://foosball.example.org/path/to/repo.git'
    dest: /srv/checkout
    version: release-0.22

ໂມດູນ ຄຳ ສັ່ງ

ໜຶ່ງ ໃນໂມດູນທີ່ຖືກ ນຳ ໃຊ້ຫຼາຍທີ່ສຸດ, ໂມດູນ ຄຳ ສັ່ງເອົາຊື່ ຄຳ ສັ່ງແລະຕໍ່ມາກໍ່ມີລາຍຊື່ການໂຕ້ຖຽງ. ຄຳ ສັ່ງແມ່ນຜ່ານແບບດຽວກັນກັບທີ່ທ່ານພິມໃນ shell Linux.

- name: Executing a command using the command module
  command: cat helloworld.txt
---
 - name: Check the remote host uptime
    hosts: servers
    tasks:
      - name: Execute the Uptime command over Command module
        register: uptimeoutput
        command: "uptime"

- debug:
          var: uptimeoutput.stdout_lines

ໂມດູນຄໍາສັ່ງດຶງເອົາເວລາຂອງເຄື່ອງແມ່ຂ່າຍຫ່າງໄກສອກຫຼີກ.

ຕົວແປເພື່ອດຶງເອົາຜົນຂອງການເຮັດວຽກ ຄຳ ສັ່ງ

ໂດຍປົກກະຕິແລ້ວ, ປື້ມຫຼີ້ນຫຼີ້ນ Ansible ຖືກໃຊ້ເພື່ອຈັດຕັ້ງປະຕິບັດວຽກຕ່າງໆໃນບັນດາເຈົ້າພາບທີ່ຖືກຈັດການໂດຍບໍ່ຕ້ອງສະແດງຜົນໄດ້ຮັບໃນສາຍ ຄຳ ສັ່ງ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ມີບາງກໍລະນີທີ່ທ່ານອາດຈະຖືກຮຽກຮ້ອງໃຫ້ເກັບ ກຳ ຜົນໄດ້ຮັບຫຼືຜົນໄດ້ຮັບ. ໃນສ່ວນນີ້, ພວກເຮົາຍ່າງທ່ານຜ່ານວິທີທີ່ທ່ານສາມາດຈັບເອົາຜົນຜະລິດຂອງປື້ມຫຼີ້ນໃນຕົວແປແລະຕໍ່ມາຈະສະແດງມັນ.

ການລົງທະບຽນທີ່ຕອບຮັບໄດ້ຖືກໃຊ້ ສຳ ລັບເກັບ ກຳ ຜົນງານຂອງ ໜ້າ ວຽກແລະບັນທຶກມັນໄວ້. ຕົວປ່ຽນແປງດັ່ງກ່າວຈະມີ ໜ້າ ທີ່ຂອງ ໜ້າ ວຽກ.

ຍົກຕົວຢ່າງ, ໃຫ້ພວກເຮົາສົມມຸດວ່າທ່ານຕ້ອງການກວດສອບການໃຊ້ disk ຂອງ nodes ທີ່ຖືກຈັດການຢູ່ໃນໄດເລກະທໍລີຮາກທີ່ກ່ຽວຂ້ອງໂດຍໃຊ້ ຄຳ ສັ່ງ df -Th/. ທ່ານຈະໃຊ້ໂມດູນ ‘ຄຳ ສັ່ງ’ ເພື່ອ ກຳ ນົດ ຄຳ ສັ່ງແລະ ‘ລົງທະບຽນ’ ເພື່ອບັນທຶກຜົນຜະລິດ std ໃນຕົວແປ.

ເພື່ອສະແດງ ຄຳ ສັ່ງ, ທ່ານຈະ ນຳ ໃຊ້ໂມດູນ 'debug' ພ້ອມກັບມູນຄ່າການກັບຄືນຂອງ stdout.

---

 - hosts: all
   become: yes

   tasks:
     - name: Execute /boot usage on Hosts
       command: 'df -Th /'
       register: df

     - debug: var=df.stdout

ດຽວນີ້, ເປີດ ນຳ ໃຊ້ປື້ມຫຼິ້ນ. ໃນກໍລະນີນີ້, ພວກເຮົາໄດ້ຕັ້ງຊື່ເຄື່ອງຫຼີ້ນຫຼີ້ນຂອງພວກເຮົາ check_disk_space.yml.

# ansible-playbook check_disk_space.yml

ດັ່ງທີ່ທ່ານໄດ້ເຫັນແລ້ວ, ຜົນຜະລິດກໍ່ລ້ວນແຕ່ເຮັດໃຫ້ມັນຍາກທີ່ຈະຕິດຕາມ.

ເພື່ອຈັດວາງຜົນຜະລິດແລະເຮັດໃຫ້ງ່າຍຕໍ່ການອ່ານ, ແທນທີ່ຄ່າ stdout return ກັບ stdout_lines.

---

 - hosts: all
   become: yes

   tasks:
     - name: Execute /boot usage on Hosts
       command: 'df -Th /'
       register: df

     - debug: var=df.stdout_lines

ໃຊ້ເງື່ອນໄຂໃນການຄວບຄຸມການຫຼີ້ນການປະຕິບັດ

ຄືກັນກັບພາສາການຂຽນໂປແກຼມ, ຄຳ ຖະແຫຼງທີ່ມີເງື່ອນໄຂແມ່ນຖືກ ນຳ ໃຊ້ເມື່ອມີຫລາຍກວ່າຜົນໄດ້ຮັບທີ່ເປັນໄປໄດ້. ລອງເບິ່ງບາງ ຄຳ ທີ່ໃຊ້ໃນສະພາບການທີ່ໃຊ້ກັນທົ່ວໄປໃນປື້ມຫຼີ້ນຫຼີ້ນ Ansible.

ບາງຄັ້ງ, ທ່ານອາດຈະຕ້ອງການປະຕິບັດວຽກງານກ່ຽວກັບຂໍ້ສະເພາະແລະບໍ່ແມ່ນຄົນອື່ນ. ຄຳ ສັ່ງທີ່ມີເງື່ອນໄຂໃນເວລາທີ່ ແມ່ນຂ້ອນຂ້າງງ່າຍທີ່ຈະ ນຳ ໃຊ້ແລະຈັດຕັ້ງປະຕິບັດໃນປື້ມຫຼີ້ນ. ເມື່ອໃຊ້ລະຫັດ ເມື່ອ ປະໂຫຍກພຽງແຕ່ປະກາດສະພາບທີ່ຢູ່ຕິດກັບຂໍ້ທີ່ສະແດງໄວ້:

when: condition

ເມື່ອສະພາບການພໍໃຈ, ຫຼັງຈາກນັ້ນ, ວຽກງານດັ່ງກ່າວຈະຖືກປະຕິບັດໃນລະບົບຫ່າງໄກສອກຫຼີກ.

ໃຫ້ກວດເບິ່ງຕົວຢ່າງບາງຢ່າງ:

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian”

ການຫຼີ້ນຂ້າງເທິງຕິດຕັ້ງ Nginx webserver ໃນບັນດາເຈົ້າພາບທີ່ແລ່ນຄອບຄົວ Debian ຂອງການລົບກວນ.

ທ່ານຍັງສາມາດໃຊ້ຕົວປະຕິບັດງານ OR ແລະ AND ພ້ອມກັບ ຄຳ ຖະແຫຼງການທີ່ມີເງື່ອນໄຂ.

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian” and
           ansible_distribution_version == “18.04”

ເມື່ອ ນຳ ໃຊ້ລະບົບປະຕິບັດການ AND , ທັງສອງ ຄຳ ຖະແຫຼງຕ້ອງມີຄວາມເພິ່ງພໍໃຈ ສຳ ລັບວຽກງານທີ່ຕ້ອງປະຕິບັດ.

ເຄື່ອງຫຼີ້ນຂ້າງເທິງຕິດຕັ້ງ Nginx ໃສ່ Nodes ທີ່ໃຊ້ OS ຂອງ Debian ຄອບຄົວເຊິ່ງເປັນລຸ້ນ 18.04. ແນ່ນອນ, ມັນຈະເປັນ Ubuntu 18.04.

ດ້ວຍຜູ້ປະຕິບັດງານ OR , ໜ້າ ວຽກຈະຖືກປະຕິບັດຖ້າຫາກວ່າມີເງື່ອນໄຂໃດ ໜຶ່ງ ທີ່ປະຕິບັດໄດ້.

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian” or
	      Ansible_os_family == “SUSE”

ເຄື່ອງຫຼີ້ນຂ້າງເທິງຕິດຕັ້ງ Nginx webservers ໃນທັງ Debian ຫຼືຄອບຄົວ SuSE ຂອງ OS ຫຼືທັງສອງຂອງມັນ.

ໝາຍ ເຫດ: ຕ້ອງຮັບປະກັນໃຫ້ໃຊ້ເຄື່ອງ ໝາຍ ສະ ເໝີ ພາບເທົ່າກັນ == ໃນເວລາທົດສອບສະພາບ.

ເງື່ອນໄຂໃນວົງ

ສະພາບການຍັງສາມາດຖືກ ນຳ ໃຊ້ໃນວົງຈອນ. ເວົ້າຕົວຢ່າງເຊັ່ນທ່ານມີບັນຊີລາຍຊື່ຂອງຫຼາຍໆຊຸດທີ່ຕ້ອງການຕິດຕັ້ງຢູ່ໃນໄລຍະໄກ.

ໃນປື້ມຫຼີ້ນຂ້າງລຸ່ມນີ້, ພວກເຮົາມີອາເລທີ່ເອີ້ນວ່າແພັກທີ່ມີບັນຊີລາຍຊື່ຂອງແພັກເກດທີ່ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງ. ບັນດາວຽກງານເຫຼົ່ານີ້ຈະໄດ້ປະຕິບັດວຽກງານ ໜຶ່ງ ຫຼັງຈາກນັ້ນຖ້າມີປະໂຫຍກທີ່ ກຳ ນົດໃຫ້ຖືກຕ້ອງ.

---
 - name: Install Software packages
    hosts: all
    vars:
	packages:
    • name: nginx
required: True
    • name: mysql
required: True
    • name: apache
required: False



   tasks:
    • name: Install “{{ item.name }}”on Debian
apt: 
 name: “{{ item.name }}”
 state: present 
When: item.required == True
loop: “{{ packages }}”  

ຕັ້ງຄ່າຈັດການຜິດພາດ

ບາງຄັ້ງ, ວຽກງານລົ້ມເຫຼວໃນເວລາທີ່ແລ່ນປື້ມຫຼິ້ນ. ສົມມຸດວ່າທ່ານ ກຳ ລັງເຮັດວຽກ 5 ຢູ່ໃນ 3 ເຊີບເວີດັ່ງທີ່ສະແດງຢູ່ໃນປື້ມຫຼີ້ນຂ້າງລຸ່ມ. ຖ້າມີຂໍ້ຜິດພາດເກີດຂື້ນໃນ ໜ້າ ວຽກທີ 3 (ເລີ່ມ MySQL) ໃນ server 2, Ansible ຈະຢຸດການປະຕິບັດວຽກທີ່ຍັງເຫຼືອຢູ່ເຊີຟເວີ 2 ແລະພະຍາຍາມເຮັດ ສຳ ເລັດວຽກທີ່ຍັງເຫຼືອໃນສ່ວນທີ່ເຫຼືອຂອງເຊີເວີ.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   tasks:
- name: Install dependencies
<< some code >>

- name: Install MySQL database
<< some code >>

- name: Start MySQL
<< some code >>

- name: Install Nginx
<< some code >>

- name: Start Nginx
<< some code >>

ຖ້າທ່ານຕ້ອງການຄວາມສອດຄ່ອງໃນການປະຕິບັດງານຂອງປື້ມຫຼີ້ນ, ຍົກຕົວຢ່າງ, ຢຸດການປະຕິບັດຂອງປື້ມຫຼີ້ນ, ຖ້າ ໜຶ່ງ ຂອງເຄື່ອງແມ່ຂ່າຍລົ້ມເຫລວ, ຄວນເພີ່ມທາງເລືອກ.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   any_errors_fatal:  true
   tasks:

ວິທີນີ້, ຖ້າວຽກ ໜຶ່ງ ລົ້ມເຫລວໃນເຄື່ອງແມ່ຂ່າຍດຽວ, Ansible ຈະຢຸດການປະຕິບັດງານຂອງປື້ມຫຼີ້ນທັງ ໝົດ ໃນທຸກເຊີຟເວີແລະອອກ.

ຖ້າທ່ານຢາກໃຫ້ເຄື່ອງຫຼີ້ນຫຼີ້ນບໍ່ສົນໃຈຂໍ້ຜິດພາດຕ່າງໆແລະ ດຳ ເນີນການປະຕິບັດວຽກທີ່ຍັງເຫຼືອຢູ່, ຫຼັງຈາກນັ້ນໃຫ້ໃຊ້ແບບບໍ່ສົນໃຈ: ທາງເລືອກທີ່ແທ້ຈິງ.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   tasks:
- name: Install dependencies
<< some code >>
     ignore_errors: True

ສ້າງ Playbook ເພື່ອ ກຳ ຫນົດລະບົບຕ່າງໆໃຫ້ເປັນສະເພາະ

ໃນພາກນີ້, ພວກເຮົາເບິ່ງທາງເລືອກເພີ່ມເຕີມບາງຢ່າງທີ່ມີຢູ່ໃນເວລາທີ່ແລ່ນປື້ມຫຼີ້ນ.

ເລີ່ມຕົ້ນດ້ວຍຕົວເລືອກການກວດສອບຫລືຕົວເລືອກການແລ່ນແຫ້ງ. ຕົວເລືອກແບບການແລ່ນແບບແຫ້ງແລ້ງຫຼືແບບເຊັກແມ່ນໃຊ້ໃນເວລາທີ່ແລ່ນປື້ມຫຼີ້ນເພື່ອກວດເບິ່ງວ່າມີຂໍ້ຜິດພາດໃດໆທີ່ຈະພົບແລະຖ້າມີການປ່ຽນແປງໃດໆທີ່ຈະເຮັດໃນບັນດາເຈົ້າຂອງທີ່ຖືກຈັດການ. ມັນ, ຢ່າງໃດກໍ່ຕາມ, ມັນບໍ່ໄດ້ເຮັດການປ່ຽນແປງໃດໆຕໍ່ກັບໄລຍະໄກ.

ຍົກຕົວຢ່າງ, ເພື່ອເຮັດໃຫ້ປື້ມຫຼີ້ນຫຼີ້ນແຫ້ງທີ່ເອີ້ນວ່າ httpd.yml ທີ່ຕິດຕັ້ງແລະເລີ່ມຕົ້ນການເຮັດວຽກຂອງ Apache webserver:

# ansible-playbook httpd.yml --check

ທາງເລືອກອື່ນທີ່ພວກເຮົາຕ້ອງການເບິ່ງແມ່ນຕົວເລືອກ --start-at-task . ສິ່ງນີ້ຖືກ ນຳ ໃຊ້ໃນເວລາທີ່ ກຳ ນົດຊື່ວຽກທີ່ປື້ມຫຼິ້ນຄວນເລີ່ມຕົ້ນຫຼືເລີ່ມຕົ້ນ.

ໃຫ້ຍົກຕົວຢ່າງ: ປື້ມຫຼິ້ນຂ້າງລຸ່ມນີ້ສະແດງອອກເຖິງ 2 ໜ້າ ວຽກ: ການຫຼີ້ນ ທຳ ອິດຕິດຕັ້ງເຄື່ອງແມ່ຂ່າຍເວັບ Apache ແລະຄັ້ງທີສອງຕິດຕັ້ງ htop ປະໂຫຍດ.

---
 - name: Install httpd

   hosts: all
   tasks:
    yum:	 
name: httpd
     state: Installed

- name: Install htop

      yum:  
      name: htop
      state: started

ຖ້າທ່ານຕ້ອງການຂ້າມການຕິດຕັ້ງ Apache webserver ແລະແທນທີ່ຈະຕິດຕັ້ງ htop utility run:

# ansible-playbook playbook.yml --start-at-task “Install htop”

ສຸດທ້າຍ, ທ່ານສາມາດແທັກ ໜ້າ ວຽກຫຼືບົດລະຄອນຂອງທ່ານໂດຍການເພີ່ມຕົວເລືອກ tags ໃສ່ປື້ມຫຼີ້ນຂອງທ່ານຕາມທີ່ສະແດງ. ສິ່ງນີ້ມາພ້ອມໃນເວລາທີ່ທ່ານມີປື້ມຫຼິ້ນໃຫຍ່ແລະທ່ານຕ້ອງການທີ່ຈະ ດຳ ເນີນວຽກງານສະເພາະຈາກປື້ມຫລິ້ນທັງ ໝົດ.

---
 - name: Install httpd
   tags: Install and start
   hosts: all
   tasks:
    yum:	 
name: httpd
     state: Installed

   tags: Install

    • service: 
name: httpd
state: started
# ansible-playbook playbook.yml -tags "Install"

ໃນການລົບແທັກຕ່າງໆໃຫ້ໃຊ້ຕົວເລືອກ --skip-tags ຕາມທີ່ສະແດງ.

# ansible-playbook playbook.yml --skip-tags "Install"

ໃນຫົວຂໍ້ນີ້, ພວກເຮົາໄດ້ ນຳ ທ່ານຜ່ານບັນດາໂມດູນທີ່ໃຊ້ກັນທົ່ວໄປໃນ Ansible, ວິທີການເອົາ stdout ຈາກການປະຕິບັດປື້ມຫລິ້ນ ສຳ ລັບການວິເຄາະ, ການ ນຳ ໃຊ້ເງື່ອນໄຂໃນ playbook ແລະວິທີການຈັດການຂໍ້ຜິດພາດທີ່ອາດຈະເກີດຂື້ນໃນເວລາເຮັດວຽກຕ່າງໆ. ສຸດທ້າຍ, ພວກເຮົາໄດ້ຈົດບັນທຶກການຕັ້ງຄ່າຂອງປື້ມຫຼິ້ນແລະວິທີທີ່ທ່ານສາມາດໃຊ້ຕົວເລືອກເພີ່ມເຕີມເພື່ອຕັດສິນໃຈວ່າຈະເຮັດວຽກໃດຖ້າທ່ານບໍ່ມີຈຸດປະສົງທີ່ຈະ ດຳ ເນີນການຫຼີ້ນຫຼີ້ນທັງ ໝົດ.