2021-05-12 14:32:11
Ansible設定及使用
Ansible特點
- 基於Python語言開發
- 不需要安裝用戶端,通過sshd通訊
- 基於模組工作,模組支援多種語言開發
- 支援編寫yaml格式的playbook,組態檔縮排2行
- 支援sudo
- 提供UI,流量器圖形化 www.ansible.com/tower
- 開源UI https://gitub.com/alaxli/ansible_ui
一、Ansible安裝設定
1. 環境
master:172.16.115.157
agent:172.16.115.202
2. 伺服器端安裝ansible,用戶端無需安裝,關閉selinux
setenforce 0
yum install -y epel-release
yum install -y ansible
yum install -y openssl-clients
3. 伺服器端生成金鑰對,目錄/root/.ssh/
ssh-keygen -t rsa //無需設定單獨密碼,生成公鑰和秘鑰id_rsa id_rsa.pub
4. 將伺服器端公鑰內容放到客戶機和本機認證檔案中,授600許可權
scp /root/.ssh/id-rsa.pub ip:/root/.ssh/authorized_keys
cat /root/.ssh/id-rsa.pub >>/root/.ssh/authorized_keys // ssh 127.0.0.1
chmod 600 /root/.ssh/authorized_keys
5. 修改ansible組態檔/etc/ansible/hosts,新增組以及組內IP
[testhost] #自定義主機組名字
172.16.115.157 #組內機器ip或者機器域名(需先設定好/etc/hosts)
127.0.0.1
二、命令模組使用
1. Ansible文件使用
ansible-doc -l # 列出所有模組
ansible-doc cron # 檢視指定模組文件
2. ping命令模組
ansible testhost -m ping #測試機器是否線上
3. command命令模組
ansible testhost -m command -a 'w' #批次執行命令;-m 後面跟模組名;-a 跟命令
ansible 172.16.115.202 -m command -a 'w' #單獨執行命令
4. shell命令模組
說明:shell包含command,並且支援管道和遠端執行指令碼
ansible testhost -m -a 'w'
註:可能用到的擴充套件包:yum install -y libselinux-python
5. copy命令模組-拷貝目錄和檔案
說明:可同時指定使用者屬主和許可權,源目錄拷貝到目標目錄下面去,如果目標目錄不存在,則會自動建立
ansible master.huangzp.com -m copy -a "src=/etc/ansible dest=/tmp/ansibletest owner=root group=root mode=0755"
ansible master.huangzp.com -m copy -a "src=/etc/passwd dest=/tmp/1.txt"
6. cron命令模組-新增和刪除計任務
說明:name計劃名稱,job計劃動作
ansible testhost -m -a "name='test_cron' job='/bin/touch /tmp/ansible_test02.txt day='1-30' weekday='4'"
ansible testhost -m cron -a "name='test_cron' state='absent'"
註:分鐘minute 小時hour 日期day 月份month 周weekday
7. yum命令模組-安裝rpm包
說明:rpm需寫全稱(實際,遠端執行shell命令更方便),可以填寫state=installed
ansible testhost -m yum -a "name=iftop"
註:雙引號中沒有單引號
8. service命令模組-管理rpm服務
說明:state狀態可以為:啟動start、停止stop等;enabled為開機啟動
ansible testhost -m service -a "name=iftop state=started enabled=yes"
三、ansible playbook
相當於將各命令模組內容寫進組態檔中,然後集中執行,類似於shell指令碼。例如:實際生產中,需批次管理很多機器,yum安裝,管理組態檔、服務等
1. ansible組態檔格式
vim /etc/ansible/test.yml # 以.yml結尾
---
#固定格式開頭
- hosts: testhost
#目標主機列表,可以是單台主機
remote_user: root
#指定用什麼使用者登入遠端主機執行操作
tasks:
- name: test_playbook
#任務描述,會列印出來
shell:
/bin/touch
/tmp/ansible_test03
.txt
#具體任務
2. 執行ansible playbook
ansible-playbook test.yml
3. 蒐集機器上系統相關資訊,用到setup模組
說明:當管理較多不同系統的主機時,可以根據獲取到的不同型別執行對應操作,如Ubuntu,使用apt-get
ansible testhost -m setup
4. ansible變數-user命令模組
vim /etc/ansible/create_user.yml
---
- name: create_user
hosts: agent.huangzp.com
gather_facts:
false
#是否啟用setup命令模組獲取的資訊
vars:
- user:
"test"
#var指定user為變數,test為變數的值,需引號
tasks:
- name: create user
user: name=
"{{ user }}"
#name為user命令模組的引數,{{ user }}變數表示形式
5. file命令模組-ansible迴圈
vim /etc/ansible/loop.yml
---
- hosts: testhost
user: root
tasks:
- name: change mode
for
file
file
: path=
/tmp/
{{ item }} mode=600 owner=root group=root
with_items:
- 1.txt
- 2.txt
6. when命令模組-ansible條件判斷
vim /etc/ansible/when.yml
---
- hosts: testhost
user: root
gather_facts: True
tasks:
- name: use when
shell:
/bin/touch
/tmp/when
.txt
when: facter_ipaddress ==
"172.16.115.202"
下面關於Ansible的文章您也可能喜歡,不妨參考下:
使用Ansible批次管理遠端伺服器 http://www.linuxidc.com/Linux/2015-05/118080.htm
在 CentOS 7 中安裝並使用自動化工具 Ansible http://www.linuxidc.com/Linux/2015-10/123801.htm
CentOS 7上搭建Jenkins+Ansible服務 http://www.linuxidc.com/Linux/2016-12/138737.htm
Linux下原始碼編譯安裝Ansible及排錯記錄 http://www.linuxidc.com/Linux/2017-03/141427.htm
Ansible基礎—安裝與常用模組 http://www.linuxidc.com/Linux/2017-02/140216.htm
自動化運維工具之 Ansible 介紹及安裝使用 http://www.linuxidc.com/Linux/2016-12/138104.htm
Ansible入門notify和handlers http://www.linuxidc.com/Linux/2017-02/140871.htm
CentOS 6.5安裝自動化工具Ansible和圖形化工具Tower http://www.linuxidc.com/Linux/2017-03/141422.htm
相關文章