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


一、初識Ansible 

介紹:

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

基本特點:

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

 

如圖:

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

 

二、Ansible運行環境

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環境。

 

三、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

 

三、配置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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM