Ansible的簡單介紹入門

Ansible簡單說明

ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppetcfenginecheffuncfabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。node

ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:python

(1)、鏈接插件connectionplugins:負責和被監控端實現通訊;linux

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

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

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

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

Ansible的安裝配置

  1. 配置yum源,直接yum安裝了運維

  2. 配置本身的epelhttps://mirrors.tuna.tsinghua.edu.cn/help/epel/  清華的學生維護的dom

  3. http://mirrors.aliyun.com/help/epel阿里的ssh

#  yuminstall ansible –y     安裝

wKiom1hTeAHREZ7RAAS17GoxGS8462.png


wKiom1hTeCOjpyHNAAJC6Hq5b28136.png

輸入ansible -V 能夠看到版本信息,說明我們已經安裝成功了


wKioL1hTeHDQVmlqAAKQfsfhHdM658.png

wKiom1hTeHzxTrt1AABvxBJv08A979.png-wh_50

編寫我們的第一個命令

Inventory 這是須要管理的機器都要按照這個個是寫,也就說Hosts裏面.

先這hosts文件中添加一個我們的測試,玩玩看吧:

能夠直接用域名和用ip來表示:
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10
能夠定義組:
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
能夠定義一段的規則的域名:
## www[001:006].example.com
## [dbservers]
## 
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
## db-[99:101]-node.example.com

我在最後把個人一個服務器地址加入:


## [dbservers]

## 

## db01.intranet.mydomain.net

## db02.intranet.mydomain.net

## 10.25.1.56

## 10.25.1.57


# Here's another example of host ranges, this time there are no

# leading 0s:


## db-[99:101]-node.example.com

192.168.61.129   #這是我加入的

接下來我們運行我們的第一條命令:

ansible '192.168.61.129' -m ping –k

報錯誤了,提示什麼公鑰,

-u:指定鏈接時的用戶名,默認就是root,因此不加該選項也是能夠的

    -k:提示輸入密碼,是--ask-pass的簡寫形式

    要不修改ansible.cfg配置文件的ask_pass = True給取消註釋,要不就在運行命令時候加上-k,這個意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False便可,我是直接ssh 192.168.61.129登錄了一次再執行就Ok 了


[root@taotao ansible]# ansible  '192.168.61.129' -m ping -k

SSH password:

192.168.61.129 | FAILED! => {

   "failed": true,

"msg":"Using a SSH password instead of a key is not possible because Host Keychecking is enabled and sshpass does not support this.  Please add this host's fingerprint to yourknown_hosts file to manage this host."


wKioL1hTe3vRJ5zVAAJbzwLEKK0806.png


ansible '192.168.61.129' -m shell -a 'date' –k   再來一個命令


wKioL1hTe8iBNDK6AABhDDVdgsg421.png

一個小實驗

把公鑰發給其餘機器,實現免密碼登錄

先這Ansible機器生成密鑰對 : ssh-keygen -t rsa -b 2048  一路回車

wKiom1hTe_LAMi9-AAFnhQRxHpM509.png

 

先蒐集登錄的主機的公鑰

Ssh –keyscan命令

wKioL1hTfB7AhMhEAACsF8NQ4qY316.png

wKiom1hTfDqBN7kfAABz4O61tas276.png

這樣就收集完成了


下面的參數本身百度查看把:

用到的模塊是anthorized_key

在當前目錄新創建了一個ssh-addkey.yml 文件和用到的命令:ansible-playbook

wKiom1hTfG3iCWklAAEV7IdJhk0136.png


ansible-playbook ssh-addkey.yml –k   執行這個命令批量推送

報錯了,須要在遠端主機運行  setenforce 0

ansible all -m yum -a 'name=libselinux-pythonstate=present' –k   還要安裝這個包

 

再次運行就OK

wKioL1hTfJmhGGvWAAFtuUbs8kg826.png

wKiom1hTfLyxtSeuAAJ7w16CzPE528.png


這遠端關閉了selinux

wKioL1hTfO3S62wfAAEl5UzJTRs005.png

wKioL1hTfRjwO-9hAADgZW26w-s229.png

最後執行命令ansible-playbook ssh-addkey.yml -k

再執行就不用加k 選項了直接不用密碼用key來登錄執行:

wKioL1hTfbygvBbKAABIkZ89Hcg814.png


實際上也能夠用ansiblecopy模塊這樣也能夠達到把公鑰發給其餘主機指定目錄,留給你們測試吧:

 

ansible all -m copy -a'src=/etc/ansible/ssh-addkey.yml dest=/tmp/ssh_addkey.yml'

wKioL1hTfeOjwZ5UAAEnOB7KpiY324.png

wKioL1hTfeSSSSFtAAE1D0Z9ZkA323.png

今天就到這裏,改天再來聊聊模塊,role,task等吧。

http://docs.ansible.com

http://docs.jinkan.org/docs/jinja2/

相關文章
相關標籤/搜索