成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Ansible自動化系統管理員的五個日常任務

運維 系統運維 自動化
Ansible 是一個工具,它可以幫助你更輕松、更快速地完成日常任務,這樣你就可以更有效地利用時間,比如學習重要的新技術。對于系統管理員來說,它是一個很好的工具,因為它可以幫助你實現標準化,并在日常活動中進行協作。

[[390802]]

通過使用 Ansible 自動執行可重復的日常任務,提高工作效率并避免錯誤。

如果你討厭執行重復性的任務,那么我有一個提議給你,去學習 Ansible!

Ansible 是一個工具,它可以幫助你更輕松、更快速地完成日常任務,這樣你就可以更有效地利用時間,比如學習重要的新技術。對于系統管理員來說,它是一個很好的工具,因為它可以幫助你實現標準化,并在日常活動中進行協作,包括:

  1. 安裝、配置和調配服務器和應用程序;
  2. 定期更新和升級系統;
  3. 監測、減輕和排除問題。

通常,許多這些基本的日常任務都需要手動步驟,而根據個人的技能的不同,可能會造成不一致并導致配置發生漂移。這在小規模的實施中可能是可以接受的,因為你管理一臺服務器,并且知道自己在做什么。但當你管理數百或數千臺服務器時會發生什么?

如果不小心,這些手動的、可重復的任務可能會因為人為的錯誤而造成延誤和問題,而這些錯誤可能會影響你及你的組織的聲譽。

這就是自動化的價值所在。而 Ansible 是自動化這些可重復的日常任務的完美工具。

自動化的一些原因是:

  1. 你想要一個一致和穩定的環境。
  2. 你想要促進標準化。
  3. 你希望減少停機時間,減少嚴重事故案例,以便可以享受生活。
  4. 你想喝杯啤酒,而不是排除故障問題!

本文提供了一些系統管理員可以使用 Ansible 自動化的日常任務的例子。我把本文中的劇本和角色放到了 GitHub 上的 系統管理員任務倉庫 中,以方便你使用它們。

這些劇本的結構是這樣的(我的注釋前面有 ==>)。

  1. [root@homebase 6_sysadmin_tasks]# tree -L 2
  2. .
  3. ├── ansible.cfg ==> 負責控制 Ansible 行為的配置文件
  4. ├── ansible.log
  5. ├── inventory
  6. ├── group_vars
  7. ├── hosts ==> 包含我的目標服務器列表的清單文件
  8. └── host_vars
  9. ├── LICENSE
  10. ├── playbooks ==> 包含我們將在本文中使用的劇本的目錄
  11. ├── c_logs.yml
  12. ├── c_stats.yml
  13. ├── c_uptime.yml
  14. ├── inventory
  15. ├── r_cron.yml
  16. ├── r_install.yml
  17. └── r_script.yml
  18. ├── README.md
  19. ├── roles ==> 包含我們將在本文中使用的角色的目錄
  20. ├── check_logs
  21. ├── check_stats
  22. ├── check_uptime
  23. ├── install_cron
  24. ├── install_tool
  25. └── run_scr
  26. └── templates ==> 包含 jinja 模板的目錄
  27. ├── cron_output.txt.j2
  28. ├── sar.txt.j2
  29. └── scr_output.txt.j2

清單類似這樣的:

  1. [root@homebase 6_sysadmin_tasks]# cat inventory/hosts
  2. [rhel8]
  3. master ansible_ssh_host=192.168.1.12
  4. workernode1 ansible_ssh_host=192.168.1.15
  5.  
  6. [rhel8:vars]
  7. ansible_user=ansible ==> 請用你的 ansible 用戶名更新它

這里有五個你可以用 Ansible 自動完成的日常系統管理任務。

1、檢查服務器的正常運行時間

你需要確保你的服務器一直處于正常運行狀態。機構會擁有企業監控工具來監控服務器和應用程序的正常運行時間,但自動監控工具時常會出現故障,你需要登錄進去驗證一臺服務器的狀態。手動驗證每臺服務器的正常運行時間需要花費大量的時間。你的服務器越多,你需要花費的時間就越長。但如果有了自動化,這種驗證可以在幾分鐘內完成。

使用 check_uptime 角色和 c_uptime.yml 劇本:

  1. [root@homebase 6_sysadmin_tasks]# ansible-playbook -i inventory/hosts playbooks/c_uptime.yml -k
  2. SSH password:
  3. PLAY [Check Uptime for Servers] ****************************************************************************************************************************************
  4. TASK [check_uptime : Capture timestamp] *************************************************************************************************
  5. .
  6. 截斷...
  7. .
  8. PLAY RECAP *************************************************************************************************************************************************************
  9. master : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  10. workernode1 : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  11. [root@homebase 6_sysadmin_tasks]#

劇本的輸出是這樣的:

  1. [root@homebase 6_sysadmin_tasks]# cat /var/tmp/uptime-master-20210221004417.txt
  2. -----------------------------------------------------
  3. Uptime for master
  4. -----------------------------------------------------
  5. 00:44:17 up 44 min, 2 users, load average: 0.01, 0.09, 0.09
  6. -----------------------------------------------------
  7. [root@homebase 6_sysadmin_tasks]# cat /var/tmp/uptime-workernode1-20210221184525.txt
  8. -----------------------------------------------------
  9. Uptime for workernode1
  10. -----------------------------------------------------
  11. 18:45:26 up 44 min, 2 users, load average: 0.01, 0.01, 0.00
  12. -----------------------------------------------------

使用 Ansible,你可以用較少的努力以人類可讀的格式獲得多個服務器的狀態,Jinja 模板 允許你根據自己的需要調整輸出。通過更多的自動化,你可以按計劃運行,并通過電子郵件發送輸出,以達到報告的目的。

2、配置額外的 cron 作業

你需要根據基礎設施和應用需求定期更新服務器的計劃作業。這似乎是一項微不足道的工作,但必須正確且持續地完成。想象一下,如果你對數百臺生產服務器進行手動操作,這需要花費多少時間。如果做錯了,就會影響生產應用程序,如果計劃的作業重疊,就會導致應用程序停機或影響服務器性能。

使用 install_cron 角色和 r_cron.yml 劇本:

  1. [root@homebase 6_sysadmin_tasks]# ansible-playbook -i inventory/hosts playbooks/r_cron.yml -k
  2. SSH password:
  3. PLAY [Install additional cron jobs for root] ***************************************************************************************************************************
  4. .
  5. 截斷...
  6. .
  7. PLAY RECAP *************************************************************************************************************************************************************
  8. master : ok=10 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  9. workernode1 : ok=10 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

驗證劇本的結果:

  1. [root@homebase 6_sysadmin_tasks]# ansible -i inventory/hosts all -m shell -a "crontab -l" -k
  2. SSH password:
  3. master | CHANGED | rc=0 >>
  4. 1 2 3 4 5 /usr/bin/ls /tmp
  5. #Ansible: Iotop Monitoring
  6. 0 5,2 * * * /usr/sbin/iotop -b -n 1 >> /var/tmp/iotop.log 2>> /var/tmp/iotop.err
  7. workernode1 | CHANGED | rc=0 >>
  8. 1 2 3 4 5 /usr/bin/ls /tmp
  9. #Ansible: Iotop Monitoring
  10. 0 5,2 * * * /usr/sbin/iotop -b -n 1 >> /var/tmp/iotop.log 2>> /var/tmp/iotop.err

使用 Ansible,你可以以快速和一致的方式更新所有服務器上的 crontab 條目。你還可以使用一個簡單的點對點 Ansible 命令來報告更新后的 crontab 的狀態,以驗證最近應用的變化。

3、收集服務器統計和 sars

在常規的故障排除過程中,為了診斷服務器性能或應用程序問題,你需要收集系統活動報告system activity reports(sars)和服務器統計。在大多數情況下,服務器日志包含非常重要的信息,開發人員或運維團隊需要這些信息來幫助解決影響整個環境的具體問題。

安全團隊在進行調查時非常特別,大多數時候,他們希望查看多個服務器的日志。你需要找到一種簡單的方法來收集這些文檔。如果你能把收集任務委托給他們就更好了。

通過 check_stats 角色和 c_stats.yml 劇本來完成這個任務:

  1. $ ansible-playbook -i inventory/hosts playbooks/c_stats.yml
  2.  
  3. PLAY [Check Stats/sar for Servers] ***********************************************************************************************************************************
  4.  
  5. TASK [check_stats : Get current date time] ***************************************************************************************************************************
  6. changed: [master]
  7. changed: [workernode1]
  8. .
  9. 截斷...
  10. .
  11. PLAY RECAP ***********************************************************************************************************************************************************
  12. master : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  13. workernode1 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

輸出看起來像這樣:

  1. $ cat /tmp/sar-workernode1-20210221214056.txt
  2. -----------------------------------------------------
  3. sar output for workernode1
  4. -----------------------------------------------------
  5. Linux 4.18.0-193.el8.x86_64 (node1) 21/02/21 _x86_64_ (2 CPU)
  6. 21:39:30 LINUX RESTART (2 CPU)
  7. -----------------------------------------------------

4、收集服務器日志

除了收集服務器統計和 sars 信息,你還需要不時地收集日志,尤其是當你需要幫助調查問題時。

通過 check_logs 角色和 r_cron.yml 劇本來實現:

  1. $ ansible-playbook -i inventory/hosts playbooks/c_logs.yml -k
  2. SSH password:
  3.  
  4. PLAY [Check Logs for Servers] ****************************************************************************************************************************************
  5. .
  6. 截斷...
  7. .
  8. TASK [check_logs : Capture Timestamp] ********************************************************************************************************************************
  9. changed: [master]
  10. changed: [workernode1]
  11. PLAY RECAP ***********************************************************************************************************************************************************
  12. master : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  13. workernode1 : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

為了確認輸出,打開轉儲位置生成的文件。日志應該是這樣的:

  1. $ cat /tmp/logs-workernode1-20210221214758.txt | more
  2. -----------------------------------------------------
  3. Logs gathered: /var/log/messages for workernode1
  4. -----------------------------------------------------
  5.  
  6. Feb 21 18:00:27 node1 kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-193.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel
  7. -swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
  8. Feb 21 18:00:27 node1 kernel: Disabled fast string operations
  9. Feb 21 18:00:27 node1 kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
  10. Feb 21 18:00:27 node1 kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
  11. Feb 21 18:00:27 node1 kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
  12. Feb 21 18:00:27 node1 kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
  13. Feb 21 18:00:27 node1 kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.

5、安裝或刪除軟件包和軟件

你需要能夠持續快速地在系統上安裝和更新軟件和軟件包。縮短安裝或更新軟件包和軟件所需的時間,可以避免服務器和應用程序不必要的停機時間。

通過 install_tool 角色和 r_install.yml 劇本來實現這一點:

  1. $ ansible-playbook -i inventory/hosts playbooks/r_install.yml -k
  2. SSH password:
  3. PLAY [Install additional tools/packages] ***********************************************************************************
  4.  
  5. TASK [install_tool : Install specified tools in the role vars] *************************************************************
  6. ok: [master] => (item=iotop)
  7. ok: [workernode1] => (item=iotop)
  8. ok: [workernode1] => (item=traceroute)
  9. ok: [master] => (item=traceroute)
  10.  
  11. PLAY RECAP *****************************************************************************************************************
  12. master : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
  13. workernode1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

這個例子安裝了在 vars 文件中定義的兩個特定包和版本。使用 Ansible 自動化,你可以比手動安裝更快地安裝多個軟件包或軟件。你也可以使用 vars 文件來定義你要安裝的軟件包的版本。

  1. $ cat roles/install_tool/vars/main.yml
  2. ---
  3. # vars file for install_tool
  4. ins_action: absent
  5. package_list:
  6.   - iotop-0.6-16.el8.noarch
  7.   - traceroute

擁抱自動化

要成為一名有效率的系統管理員,你需要接受自動化來鼓勵團隊內部的標準化和協作。Ansible 使你能夠在更少的時間內做更多的事情,這樣你就可以將時間花在更令人興奮的項目上,而不是做重復的任務,如管理你的事件和問題管理流程。

有了更多的空閑時間,你可以學習更多的知識,讓自己可以迎接下一個職業機會的到來。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2010-10-21 16:18:18

2022-11-28 10:12:57

系統systemd

2014-02-11 09:53:11

2022-07-11 10:08:19

系統管理任務自動化

2015-07-06 09:16:51

2018-08-15 14:00:18

LinuxBash系統管理員

2013-06-26 09:29:30

系統管理員

2013-09-29 09:50:21

系統管理員Ubuntu JujuJuju

2010-04-12 09:33:58

系統管理員

2022-02-05 08:27:51

系統管理員系統運維

2013-03-30 21:59:13

系統管理員必備工具iftop

2020-07-10 07:54:42

系統管理員技能

2018-08-01 08:12:34

Linux管理員網絡管理

2018-10-10 10:37:03

2018-03-22 11:23:09

2024-08-14 14:42:00

2010-11-10 09:36:38

系統管理員守則

2011-10-20 10:29:22

VMwareVMworld虛擬化

2012-06-06 10:41:37

系統管理員運維

2013-08-20 10:11:20

Go系統管理員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97久久久久久 | 九九九视频在线观看 | 国产精品成人一区二区三区 | 在线日韩欧美 | 成人午夜网站 | 色爱综合网 | 国产一二三区精品视频 | 最新国产精品视频 | 欧美日韩久久 | 中文成人在线 | 日韩中文在线视频 | 久久亚洲一区二区三区四区 | 成人国产精品久久久 | 欧美成人精品在线 | 亚洲欧美aⅴ | 99精品视频一区二区三区 | 国产精品一区二区三区久久 | 午夜极品| 天天澡天天操 | 日本免费一区二区三区 | 999www视频免费观看 | 亚洲精品久久久久久久久久久 | 亚洲国产在 | 性国产xxxx乳高跟 | 国产成人99久久亚洲综合精品 | a在线v| 亚洲码欧美码一区二区三区 | 精品久久国产视频 | 亚洲成人福利视频 | 国产粉嫩尤物极品99综合精品 | 国产精品欧美一区二区三区 | 亚洲美女在线视频 | 国产精品久久久久久久粉嫩 | 精品一区av | 国产亚洲精品久久久久久牛牛 | 一区二区三区四区在线视频 | 亚洲精品久久久久久一区二区 | 在线资源视频 | 欧美视频二区 | 亚洲国产一区在线 | 日本精品在线一区 |