日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

_Ansible批量管理与维护

發布時間:2024/9/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 _Ansible批量管理与维护 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Ansible是2013年推出的一種通用自動化工具,可用于配置管理或工作流程自動化。配置管理是一種“基礎架構代碼”實踐,它將事物編碼,例如應該在系統上安裝什么包和版本,或者應該運行什么守護進程。工作流自動化可能是從配置基礎架構到部署軟件的任何事情。Ansible在2015年時被Redhat公司收購。
  Ansible是用Python編寫的,它使用SSH在不同的機器上執行命令。Ansible是無代理的,這使得入手更容易。您只需要在相關機器上安裝SSH訪問和Python。Ansible使用聲明式YML"playbook"
將一組主機(從“hosts”)映射到定義明確的角色。聲明性用于指示Ansible如何設置或更改事物,Ansible才進行必要的更改。

  200-500臺服務器,用ansible。更多的則使用saltstack

  ansible 無需安裝客戶端,依賴ssh服務。 -->ssh 認證?? ? ? ?

ansible 部署

安裝ansible

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo ? #ansible 管理端 yum install ansible -y yum install libselinux-python -y ? #backup nfs01 被管理端 yum install libselinux-python -y [root@m01 ~]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg   # ansible的配置文件 ├── hosts       # ansible管理了 哪些服務器 服務器列表 └── roles      # 角色[root@m01 ~]# cat /etc/ansible/hosts [lewen] 172.16.1.31 172.16.1.41 ? ansible lewen -m command -a "hostname" ansible lewen -m command -a "yum install cowsay -y"

-m 后邊是模塊的名字 -m MODULE_NAME,--module-name=MODULE_NAME module name to execute(default=command).-a 后面是要執行的命令  -a MODULE_ARGS,-args=MODULE_ARGS. module arguments.

復制文

利用ansible遠程批量拷貝文件或目錄。
語法:

?ansible lewen -m copy -a "sre=/etc/passwd dest=/tap/oldgirl.txt owner=lewen group=lewen sode=0755"?
注意:
1)如果指定的目標目錄不存在,系統會自動創建,否則源目錄會放到目標目錄下面去:
2)如果copy的是文件,dest指定的名字和源如果不同,并且它不是已經存在的目錄,相當于copy過去后再重命名:
3)若果dest是目標機器上已經存在的目錄,則會直接把文件copy 到該目錄下面。
4)設定的用戶和組lewen在所有客戶端必須存在。

[root@m01 ~]# ansible lewen -m copy -a "src=/etc/hosts dest=/tmp owner=lewen mode=0755" # backup=yes 已存在的文件就復制備份 172.16.1.41 | SUCCESS => { "changed": true, "checksum": "bc07bb4d3a780f4fd8cae94ec7bff04edb1a5a4e", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "55ee21bf1168f9be70abd35bf29d8e4a", "mode": "0755", "owner": "lewen", "size": 364, "src": "/root/.ansible/tmp/ansible-tmp-1517744820.18-259504826638509/source", "state": "file", "uid": 500 } 172.16.1.31 | SUCCESS => { "changed": true, "checksum": "bc07bb4d3a780f4fd8cae94ec7bff04edb1a5a4e", "dest": "/tmp/hosts", "gid": 0, "group": "root", "md5sum": "55ee21bf1168f9be70abd35bf29d8e4a", "mode": "0755", "owner": "lewen", "size": 364, "src": "/root/.ansible/tmp/ansible-tmp-1517744820.17-14642605512978/source", "state": "file", "uid": 500 } ? ? [root@m01 ~]# ansible lewen -m command -a "ls -l /tmp/hosts" 172.16.1.31 | SUCCESS | rc=0 >> -rwxr-xr-x 1 lewen root 364 Feb 4 19:47 /tmp/hosts 172.16.1.41 | SUCCESS | rc=0 >> -rwxr-xr-x 1 lewen root 364 Feb 4 19:47 /tmp/hosts ansible lewen -m copy -a "src=/etc/hosts dest=/tmp backup=yes"ansible-doc -l|wc -l ansible-doc -s copy # 查看文檔

其他常用模塊命令 ansible lewen -m copy -a "src=/server/scripts/yum-htop.sh dest=/server/scripts/ " ansible lewen -m shell -a "/bin/sh /server/scripts/yum-htop.sh" ansible lewen -m script -a "/server/scripts/yum.sh"

定時任務

linux 定時任務。
分,時,日,月,周? ?執行的命令。

# 創建定時任務
[root@m01 scripts]# ansible lewen -m cron -a "name='restart network' minute=00 hour=00 job=' /etc/init.d/network restart >/dev/null 2>&1'" 172.16.1.31 | SUCCESS => { "changed": true, "envs": [], "jobs": [ "restart network" ] } 172.16.1.41 | SUCCESS => { "changed": true, "envs": [], "jobs": [ "restart network" ] } ?# 查看定時任務 [root@m01 scripts]# ansible lewen -a "crontab -l"
172.16.1.41 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 #check & send result lee at 2017-01-01 03 * * * /bin/sh /server/scripts/check.sh >/dev/null 2>&1 #Ansible: restart network 00 * * * /etc/init.d/network restart >/dev/null 2>&1 172.16.1.31 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 #Ansible: restart network 00 * * * /etc/init.d/network restart >/dev/null 2>&1? ?# 取消定時任務 [root@m01 ~]# ansible oldboy -m cron -a "name='restart network' state=absent " 172.16.1.31 | SUCCESS => {"changed": true,"envs": [],"jobs": [] } 172.16.1.41 | SUCCESS => {"changed": true,"envs": [],"jobs": [] }?

常用模塊

每個模塊就是一個功能 command(默認的模塊)  #執行命令模塊**** shell          #執行shell 腳本模塊****。 # 支持shell 管道更多的功能 script         #把腳本發到客戶端,然后執行。****。 copy          #把本地文件發送到遠端 file          # 設定文件屬性模塊。 service        #系統服務管理模塊。 cron          #計劃任務管理模塊 yum          #yum軟件包安裝管理模塊 synchronize     #使用rsync同步文件模塊。
eg:
  ansible lewen -m service -a "name=crond state=started enabled=yes"
ssh 認證模塊 authorized_key   #-Adds or removes an SSH authorized key

playbook?

ansible 劇本

核心功能
1.PyYAML-劇本的語言。

2.paramiko-遠程連接與數據傳輸。
3.Jinjia2

mkdir -p /server/playbook ? [root@m01 playbook]# cat ifconfig.yml - hosts: lewentasks:- command: ifconfig- shell: ifconfig >/tmp/ip.log ? ? ansible-playbook -C ifconfig.yml # 檢查劇本 ansible-playbook ifconfig.yml [root@m01 playbook]# cat print-ip.yml - hosts: alltasks:- name: get ip addressshell: ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}' >>/tmp/ip.logansible-playbook -C print-ip.yml ansible-playbook print-ip.yml ansible all -a "tail -1 /tmp/ip.log" ?ansible oldboy -m cron -a 'name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present' ? ?# playbook添加定時任務 [root@m01 playbook]# cat add-cron.yml - hosts: oldboytasks:- name: add restart network croncron: name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present ? ?查看 [root@m01 playbook]# ansible oldboy -a "crontab -l" 172.16.1.41 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 #check & send result lee at 2017-01-01 03 * * * /bin/sh /server/scripts/check.sh >/dev/null 2>&1 172.16.1.31 | SUCCESS | rc=0 >> #time sync by lidao at 2017-03-08 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

playbook添加定時任務

兩種書寫格式 (1)
- hosts: oldboytasks:- name: add restart network croncron: name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present
(2) - hosts: oldboytasks:- name: add restart network croncron:name: restart networkminute: 00hour: 00job: /etc/init.d/network restart >/dev/null 2>&1state: present

例3:對同一臺機器配置多個任務

重啟網絡 service

安裝軟件 yum

顯示時間信息到文件 date

[root@m01 playbook]# cat manage.yml - hosts: alltasks:- name: restart networkservice: #服務name: network #服務器名state: restarted #狀態- name: install tree nmap lrzsz iftop htop iotop ncshell: yum install -y tree nmap lrzsz iftop htop iotop nc- name: print date to fileshell: date +%F >>/tmp/date.log
yml 轉化后的格式:
[ { hosts: 'all',tasks: [ { name: 'restart network',service: { name: 'network', state: 'restarted' } },{ name: 'install tree nmap lrzsz iftop htop iotop nc',shell: 'yum install -y tree nmap lrzsz iftop htop iotop nc' },{ name: 'print date to file',shell: 'date +%F >>/tmp/date.log' } ] } ]

-

[root@m01 playbook]# cat hosts.yml - hosts: 172.16.1.41tasks:- name: mkdirshell: mkdir -p /oldboy/backup - hosts: 172.16.1.31tasks:- name: findshell: find /etc -type f -name "*.conf" >>/tmp/name.logansible安裝rsync服務器nfs服務器配置sersync數據同步如何使用pssh (pssh pscp prsync) view

總結

以上是生活随笔為你收集整理的_Ansible批量管理与维护的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。