自動化運維工具之 Ansible 介紹及安裝使用

1、初識Ansible html

介紹:python

  Absible 使用 模塊(Modules)來定義配置任務。模塊能夠用標準腳本語言(Python,Bash,Ruby,等等)編寫,這是一個很好的作法,使每一個模塊冪等。Ansible劇本(YAML語言編寫)角色映射到 節點/虛擬機上,以對這些節點/虛擬機 進行編排有序的執行。Ansible支持ad-hoc任務:管理任務(沒必要冪等)以在多個節點/虛擬機上執行。Ansible具備無代理架構:你不須要在配置的節點/虛擬機上安裝Ansible(然而,這些節點必須安裝python環境),Ansible 經過SSH或者經過PowerShell(Windows機器)從單個控制機器上配置管理節點/虛擬機,而且可以支持並行配置多個節點。Ansible 能夠用來配置 類unix系統或 Windows節點/虛擬機。git

基本特色:github

  • 安裝部署簡單,支持多種方式安裝(yum,git等)
  • 支持分類過濾管理主機
  • 輕量級,被管理端無需安裝特定agent(需有python、ssh環境)
  • 模塊衆多,能夠知足咱們的須要
  • 開發社區活躍
  • Ansible playbook 劇本
  • 支持各類公有云、私有云平臺
  • 基於Push推送方式,能夠隨時修改
  • 冪等性(已經存在的修改後的狀態,再次執行這個任務時,不會進行任何修改)

 

如圖:docker

  注:上圖是從官方介紹視頻中的截圖。用戶經過ansible 自動化引擎, 使用playbook ,插件、模塊去去管理被控制主機。並能夠結合CMDB管理系統。windows

 

2、Ansible運行環境centos

1.ansible的安裝支持多種方式。安全

官方建議:架構

  • 若是你想在Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian, or Ubuntu上,運行最新版本的Ansible版本,推薦使用包管理器,如yum,apt-get.
  • 對於其它安裝選項,推薦使用pip 包管理器進行安裝
  • 若是想要使用最新的功能能夠跟蹤開發版本,從github上進行git到本地,進行使用

2.控制機要求:運維

  Ansible 能夠運行在有python 2.6或者2。7環境的類unix 環境。windows 暫不支持

3.被控制節點要求

  控制節點須要和 Ansible 被控制節點通訊,一般使用ssh 進行鏈接。另外也須要python環境。

 

3、Ansible 安裝

1.控制管理機安裝(安裝方式有多種,源碼,pip等方式),咱們這裏使用git 源碼安裝方式進行部署

[root@docker ~]# git clone git://github.com/ansible/ansible.git --recursive
[root@docker ~]# cd ansible/

進行源碼安裝

[root@docker ansible]# make && make install

先安裝pip包管理工具,而後安裝ansible 程序所使用的幾個python模塊

[root@docker ansible]# easy_install pip
[root@docker ansible]# pip install paramiko PyYAML Jinja2 httplib2 six

更新ansible 代碼時用到的兩條命令

[root@docker ansible]# git pull --rebase Current branch devel is up to date. [root@docker ansible]# git submodule update --init --recursive

 

2.檢查驗證
做者:飛走不可,原文連接:http://www.cnblogs.com/hanyifeng/p/6110926.html

[root@docker ansible]# ansible --version
ansible 2.3.0
  config file =
  configured module search path = Default w/o overrides

 

3、配置Ansible 嘗試下管理主機

1.默認配置文件在你git下載源碼的目錄ansible目錄中

/root/ansible/bin/ansible

2.建立hosts存放目錄,並編寫hosts文件

[root@docker ansible]# mkdir -pv /etc/ansible/
mkdir: created directory '/etc/ansible/'

從安裝文件中,拷貝hosts

[root@docker ansible]# cp /root/ansible/examples/hosts /etc/ansible/.

編寫hosts文件,添加1個主機

3.建立倆docker 容器吧

[root@docker ~]# docker run -d -it --name centos-1 centos_sshd_1
b032a6c8b4014837181029059661104373db8a6190a1f854ae5ff701b961a546
[root@docker
~]# docker run -d -it --name centos-2 centos_sshd_1 cc647f916437df70b54096bcf676804114d1558124234b7716aee68271414f27

容器建立完,默認已經啓動了sshd 服務開啓22端口(這裏能夠查看後續我發的Docker 自定義鏡像的文章),咱們查看下它們的ip

[root@docker ~]# docker exec centos-1 hostname -I
172.17.0.2 
[root@docker ~]# docker exec centos-2 hostname -I
172.17.0.3 

4.將上面2個被控制主機的ip 添加到 hosts 文件中,並進行通訊測試

打開/etc/ansible/hosts文件,在末尾按照如下格式添加。

[cenots_group]
172.17.0.2
172.17.0.3

添加完成後,在控制主機上使用 ping 模塊進行測試,以下:(約定:被控主機稱爲client,控制主機稱爲managent,如下相似)

  全部主機:

[root@docker ~]# ansible '*' -m ping --ask-pass
SSH password: 
172.17.0.3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.17.0.2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

  指定組的方式:

[root@docker ~]# ansible centos_group -m ping --ask-pass
SSH password: 
172.17.0.2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.17.0.3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

  指定單個主機的方式:

[root@docker ~]# ansible '172.17.0.3' -m ping --ask-pass
SSH password: 
172.17.0.3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

解釋:ansible 命令後面,跟的第一個參數,也就是咱們hosts 文件裏面的主機清單(能夠指定單個主機ip,也能夠是組,也支持正則匹配); 第二個參數是使用-m 指定模塊,這裏咱們用了 ping模塊。 --ask-pass 這個是當咱們使用主機密碼來進行ssh認證時的參數,屢次輸入後,會感受比較麻煩。推薦使用密鑰的方式,安全又方便。下面說下如何用公鑰

5.使用密鑰來進行ssh 遠程訪問

先在management 上生成公鑰私鑰對

[root@docker ~]# ssh-keygen -t rsa -C "management"

將公鑰放到使用 ssh-copy-id命令,上傳到client 上面去。

[root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.2

[root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.3

如今再試下管理命令,不用輸入密碼了

[root@docker ~]# ansible centos_group -a "/bin/echo Hello world"
172.17.0.3 | SUCCESS | rc=0 >>
Hello world

172.17.0.2 | SUCCESS | rc=0 >>
Hello world

 ok,等下一次學習Inventory(資源清單)時,再來分享吧。

 

注:ansible是第二次開始寫的連載系列文章,若是喜歡能夠關注哦。若是感受有很差的地方,必定要不吝賜教哈。我會很是很是感激的。另外,若是你以爲本文對你有幫助,歡迎轉載,但務必要註明出處啊。

做者:飛走不可,原文連接:自動化運維工具之Ansible 介紹以及安裝http://www.cnblogs.com/hanyifeng/p/6110926.html

參考連接:

http://docs.ansible.com/

相關文章
相關標籤/搜索