ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。node
ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:python
(1)、鏈接插件connectionplugins:負責和被監控端實現通訊;linux
(2)、host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;web
(3)、各類模塊核心模塊、command模塊、自定義模塊;shell
(4)、藉助於插件完成記錄日誌郵件等功能;服務器
(5)、playbook:劇本執行多個任務時,非必需可讓節點一次性運行多個任務。框架
配置yum源,直接yum安裝了運維
配置本身的epel源https://mirrors.tuna.tsinghua.edu.cn/help/epel/ 清華的學生維護的dom
http://mirrors.aliyun.com/help/epel阿里的ssh
# yuminstall ansible –y 安裝
輸入ansible -V 能夠看到版本信息,說明我們已經安裝成功了
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."
ansible '192.168.61.129' -m shell -a 'date' –k 再來一個命令
先這Ansible機器生成密鑰對 : ssh-keygen -t rsa -b 2048 一路回車
先蒐集登錄的主機的公鑰
Ssh –keyscan命令
這樣就收集完成了
下面的參數本身百度查看把:
用到的模塊是anthorized_key
在當前目錄新創建了一個ssh-addkey.yml 文件和用到的命令:ansible-playbook
ansible-playbook ssh-addkey.yml –k 執行這個命令批量推送
報錯了,須要在遠端主機運行 setenforce 0
ansible all -m yum -a 'name=libselinux-pythonstate=present' –k 還要安裝這個包
再次運行就OK
這遠端關閉了selinux
最後執行命令ansible-playbook ssh-addkey.yml -k
再執行就不用加k 選項了直接不用密碼用key來登錄執行:
實際上也能夠用ansible的copy模塊這樣也能夠達到把公鑰發給其餘主機指定目錄,留給你們測試吧:
ansible all -m copy -a'src=/etc/ansible/ssh-addkey.yml dest=/tmp/ssh_addkey.yml'
今天就到這裏,改天再來聊聊模塊,role,task等吧。