自動化營運之Ansible安裝及基本模組應用

來源:互聯網
上載者:User

標籤:sha   file   資訊   金鑰組   記錄   同步機制   ase   window   相關資訊   

ansible簡介

  • Ansible可以同時管理Redhat系的Linux,Debian系的Linux,以及Windows主機。管理節點只在執行指令碼時與遠程主機串連,沒有特別的同步機制,所以斷電等異常一般不會影響ansbile。
  • 2.ansible是新出現的自動化營運工具,基於Python開發,集合了眾多營運工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批配量序部署、批量運行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所啟動並執行模組,ansible只是提供一種架構。主要包括:
    ? ?? ???(1)、串連外掛程式connection plugins:負責和被監控端實現通訊;
    ? ?? ???(2)、host inventory:指定操作的主機,是一個設定檔裡面定義監控的主機;
    ? ?? ???(3)、各種模組核心模組、command模組、自訂模組;
    ? ?? ???(4)、藉助於外掛程式完成記錄日誌郵件等功能;
    ? ?? ???(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

  • ?3.ansible的架構:串連其他主機預設使用ssh協議

    實驗環境介紹:
主機名稱 IP地址 作業系統
ansible管理端 192.168.195.147 CentOS7
被管理端1 192.168.195.162 CentOS7
被管理端2 192.168.195.163 CentOS7

安裝部署
首先在管理主機上安裝Ansible

yum install -y epel-release //安裝epel源
yum install ansible -y
ansible --version //查看ansible版本

yum install tree -y
tree /etc/ansible/ //樹狀結構展示檔案夾
/etc/ansible/
├── ansible.cfg #ansible的設定檔
├── hosts #ansible的主倉庫,用於儲存需要管理的遠程主機的相關資訊
└── roles #角色
修改ansible設定檔hosts,添加被管理主機清單
cd /etc/ansible
vi hosts //配置主機清單
[webserver]
192.168.195.162
[mysql]
192.168.195.163
設定SSH金鑰組,並將公開金鑰推送給被管理主機
ssh-keygen -t rsa #產生密鑰
ssh-copy-id [email protected]
ssh-copy-id [email protected] //配置金鑰組驗證


---------免互動代理--------------
ssh-agent bash
ssh-add


ansible命令列模組
1,------command模組------

命令格式:ansible [主機] [-m 模組] [-a args]
ansible-doc -l //列出所有已安裝的模組 註:按q退出

ansible-doc -s yum //-s列出yum模組描述資訊和操作動作

ansible 192.168.195.162 -m command -a ‘date‘ //指定ip執行date
ansible webserver -m command -a ‘date‘ //指定分類執行date
ansible mysql -m command -a ‘date‘

ansible all -m command -a ‘date‘ //所有hosts主機執行date命令

ansible all -a ‘ls /‘ 如果不加-m模組,則預設運行command模組

2,-----cron模組------

兩種狀態(state):present表示添加(可以省略),absent表示移除。
ansible-doc -s cron //查看cron模組資訊
ansible webserver -m cron -a ‘minute="/1" job="/bin/echo heihei" name="test cron job"‘
ansible webserver -a ‘crontab -l‘
ansible webserver -m cron -a ‘name="test cron job" state=absent‘ //移除計劃任務,假如該計劃任務沒有取名字,name=None即可



3,-----user模組------

user模組是請求的是useradd, userdel, usermod三個指令
ansible-doc -s user //查看user模組的用法

ansible mysql -m user -a ‘name="test01"‘ //建立使用者test01
ansible mysql -m command -a ‘tail /etc/passwd‘

ansible mysql -m user -a ‘name="test01" state=absent‘ //刪除使用者test01


4,-----group模組-----

group模組請求的是groupadd, groupdel, groupmod 三個指令。
ansible-doc -s group //查看group模組的用法

ansible mysql -m group -a ‘name=mysql gid=306 system=yes‘ //建立組為mysql
ansible mysql -a ‘tail /etc/group‘ //查看新建立的組mysql

ansible mysql -m user -a ‘name=test01 uid=306 system=yes group=mysql‘ //建立test01使用者,並指定組為mysql,
ansible mysql -a ‘tail /etc/passwd‘ //查看建立的使用者test01

ansible mysql -a ‘id test01‘ //查看使用者test01的資訊


5,------copy模組--------

ansible-doc -s copy
ansible mysql -m copy -a ‘src=/etc/fstab dest=/opt/fstab.back owner=root mode=640‘ //檔案複製,將fstab複製到/opt下命名為fstab.back,並設定許可權為640,指定所有者為root
ansible mysql -a ‘ls -l /opt‘ //查看/opt目錄下的檔案,是否有新檔案產生
ansible mysql -a ‘cat /opt/fstab.back‘ //查看複製的檔案內容

ansible mysql -m copy -a ‘content="hello heihei!" dest=/opt/fstab.back‘ //將hello heihei!寫入/opt/fstab.back 也可以建立新檔案
ansible mysql -a ‘cat /opt/fstab.back‘ //再次查看其內容,發生替換

6,------file模組--------

ansible-doc -s file
首先建立一個測試使用者mysql,並加入mysql組中
ansible mysql -m user -a ‘name=mysql system=yes‘
ansible mysql -m group -a ‘name=mysql system=yes‘

ansible mysql -m file -a ‘owner=mysql group=mysql mode=644 path=/opt/fstab.back‘ //修改檔案的屬主屬組許可權等
ansible mysql -m file -a ‘path=/opt/fstab.link src=/opt/fstab.back state=link‘ //設定/opt/fstab.link為/opt/fstab.back的連結檔案

ansible mysql -m file -a "path=/opt/fstab.back state=absent" //刪除一個檔案
ansible mysql -m file -a "path=/opt/test state=touch" 建立一個檔案


7,-----ping模組-------

ansible all -m ping //測試被管理主機是否線上


8,-----yum模組-----

ansible-doc -s yum
ansible mysql -m yum -a ‘name=httpd‘ //yum安裝httpd
[[email protected] ~]# rpm -q httpd

ansible mysql -m yum -a ‘name=httpd state=absent‘ //卸載httpd

9,-----service模組--------

ansible-doc -s service
[[email protected] ~]# yum -y install httpd
ansible webserver -m service -a ‘enabled=true name=httpd state=started‘ //啟動httpd服務
[[email protected] ~]# systemctl status httpd //在webserver上查看httpd是否開啟

10,------shell模組-----

ansible-doc -s shell
ansible mysql -m shell -a ‘echo abc123|passwd --stdin mysql‘ //建立使用者使用無互動模式給使用者佈建密碼


11,------script模組---------

ansible-doc -s script //在ansible管理端編輯一個簡單的shell指令碼
vi test.sh
#!/bin/bash
echo "hello ansible from script"> /opt/script.txt

chmod +x test.sh //賦予執行許可權
ansible mysql -m script -a ‘test.sh‘ //使用script模組,將指令碼在mysql上執行


[[email protected] ~]# cat /opt/script.txt //在mysql上查看指令碼執行結果


12,-----setup模組-------

ansible-doc -s setup
ansible mysql -m setup //擷取mysql組主機的facts資訊

ansible作為一個自動化營運工具還有很多模組,本篇文章只是介紹一些常用的模組。

自動化營運之Ansible安裝及基本模組應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.