自動化運維之Ansible的安裝部署與命令模塊

  • Ansible簡介

Ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。

主要包括:

(1)連接插件connection plugins:負責和被監控端實現通信;

(2)host inventory:指定操作的主機,是一個配置文件裏面定義監控的主機;

(3)各種模塊核心模塊、command模塊、自定義模塊;

(4)藉助於插件完成記錄日誌郵件等功能;

(5)playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

  • 搭建環境

管理端:centos7-1 192.168.177.145

被管理端:centos7-2 192.168.177.135

被管理端:centos7-3 192.168.177.132

Ansible安裝

192.168.177.145:

# systemctl stop firewalld.service  //關閉防火牆
# setenforce 0
# yum install -y epel-release  //安裝epel源
# yum install ansible -y   //安裝Ansible
# vim /etc/ansible/hosts 
  [abc]
  192.168.177.135
  [mysql]
  192.168.177.132
# ssh-keygen -t rsa       //設置密鑰對
# ssh-copy-id [email protected]
# ssh-copy-id [email protected]  //配置密鑰對
# ssh-agent bash    //免交互代理
# ssh-add

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

192.168.177.135(另一臺也一樣):

# systemctl stop firewalld.service  //關閉防火牆
# setenforce 0
# cd ~/.ssh

自動化運維之Ansible的安裝部署與命令模塊

Ansible命令行模塊

command模塊

命令格式:ansible [主機] [-m 模塊] [-a args]

# ansible 192.168.177.135 -m command -a 'date'   //指定ip執行date
# ansible mysql -a 'date'   //指定分類執行date

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

cron模塊

用於定義任務計劃

兩種狀態(state):present表示添加(可以省略),absent表示移除。

# ansible-doc -s cron      //查看cron模塊信息
# ansible abc -m cron -a 'minute="*/1" job="/usr/bin/echo nihao" name="test nihao"'  //添加週期性計劃任務
# ansible abc -a 'crontab -l'
# ansible abc -m cron -a 'name="test nihao" state=absent'   //移除計劃任務,假如該計劃任務沒有取名字,name=None即可

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

user模塊

用於創建新用戶和更改刪除已存在的用戶

user模塊是請求的是useradd, userdel, usermod三個指令

# ansible-doc -s user
# ansible mysql -m user -a 'name=zhangsan'  //創建zhangsan
# ansible mysql -m user -a 'name=zhangsan state=absent'   //刪除zhangsan

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

group模塊

對用戶組進行管理

group模塊請求的是groupadd, groupdel, groupmod 三個指令

# ansible mysql -m group -a 'name=test gid=306 system=yes'  //創建test組
# ansible mysql -m user -a 'name=wang' //創建用戶wang
# ansible mysql -m group -a 'name=test1 gid=506 system=yes'  //創建test1組
# ansible mysql -m user -a 'name=wang uid=506 group=test1 system=yes' //將wang添加到test1組

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

copy模塊

用於實現文件複製和批量下發文件

# ansible-doc -s copy
# ansible abc -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=644' //將/etc/fstab複製到被管理端/opt下
# ansible abc -a 'cat /opt/fstab.bk' //查看

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

file模塊

用於設置文件屬性

# ansible mysql -m file -a 'path=/opt/test.txt state=touch'  //創建空文件
# ansible mysql -m file -a 'path=/opt/test.txt owner=wang group=test1 mode=666'   //設置文件的屬主,屬組和權限
# ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'  //創建鏈接性文件
# ansible mysql -m copy  -a 'content="hello" dest=/opt/test.txt'  //在test.txt中寫入內容

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

ping模塊

用於測試指定主機的連通性

# ansible all -m ping

自動化運維之Ansible的安裝部署與命令模塊

yum模塊

# ansible abc -m yum -a 'name=httpd' //yum安裝httpd服務

自動化運維之Ansible的安裝部署與命令模塊

service模塊

用來控制管理服務的運行狀態

# ansible abc -m service -a 'name=httpd enabled=true state=started'  //開機自啓動

自動化運維之Ansible的安裝部署與命令模塊
自動化運維之Ansible的安裝部署與命令模塊

shell模塊

在被管理端運行命令

# ansible mysql -m shell -a 'echo "abc123" | passwd --stdin wang'  //創建密碼

自動化運維之Ansible的安裝部署與命令模塊

script模塊

將本地腳本複製到被管理端運行

# ansible-doc -s script
# vi /opt/test.sh
#!/bin/bash
echo "hello ansible from script"> /opt/script.txt
# chmod +x /opt/test.sh
# ansible mysql -m script -a '/opt/test.sh'

自動化運維之Ansible的安裝部署與命令模塊

setup模塊

# ansible mysql -m setup           //獲取mysql組主機的facts信息

自動化運維之Ansible的安裝部署與命令模塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章