ansible集合了眾多優秀運維工具(Puppet、Cfengine、Chef、Func、Fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等命令等功能。ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。
從功能上ansible可以實現以下目標:
- 應用代碼自動化部署
- 系統管理配置文件自動化
- 支持持續交付自動化
- 支持雲平台、大數據平台(如AWS,OpenStack)
- 輕量級、無需客戶端安裝agent,更新時只需要在客戶機進行一次更新即可
- 批量任務執行可以寫成腳本,不用分發到遠程就可以執行
- 使用python編寫,維護更方便,Ruby語法過於復雜
- 支持非root操作,支持sudo
一、安裝ansible
系統環境
cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)
軟件版本
ansible-2.5.3-1.el7.noarch
ansible一般在epel源中提供,首先配置epel源(base yum倉庫默認沒有ansible源碼)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
清除yum緩存
yum clean all
yum makecache
yum方式安裝ansible
yum install ansible
查看版本
ansible --version
二、然后更改配置,/etc/ansible/ansible.cfg,將里面的host_key_checking = False前的#去掉,ssh在首次連接出現檢查keys 的提示,通過設置,不會有這些提示
# 要不修改ansible.cfg配置文件的ask_pass = True給取消注釋
三、.去設置hosts文件,在最后加入以下配置,10.139.11.118是要遠程的服務器IP,ansible_ssh_user登錄服務器的用戶,ansible_ssh_pass登錄服務器的密碼
[test] 10.139.11.118 ansible_ssh_user=root ansible_ssh_pass='wddx@2018' 10.139.11.119 ansible_ssh_user=root ansible_ssh_pass='1qaz!QAZ'
四、測試ansible是否可用
ansible test -m command -a 'uptime'
五、生成公鑰/私鑰
ssh-keygen # 生成秘鑰
# 一路enter
六、下發公鑰、私鑰
一個一個下發
ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.127.7.77 # 將公鑰寫入被管理機
機器多的情況下,使用ssh-copy-id方法有些費時,使用ansible-playbook推送ymal,
新建push.ssh.ymal文件,將下面內容寫入
# Using alternate directory locations: - hosts: test user: root tasks: - name: ssh-copy authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" tags: - sshkey
執行推送命令
ansible-playbook push.ssh.ymal
#輸入root密碼
測試是否下發成功
ssh root@10.127.7.77如果成功進入出現【root@web1】#則說明成功
#查看各機器時間 ansible all -a date #ansible all -m command -a date # 作用同上 #ping ansible all -m ping
# 切換root
ansible webservers -m ping -u ansible -sudo