ansible安裝

https://galaxy.ansible.com/  在線playbook分享平臺
安裝控制機準備:
python2.6或者以上
paramiko模塊
PyYAML
Jinja2
httplib2
控制機的系統版本能夠是:RedHat Debian CentOS OSX BSD等
查看被管節點若是類UNIX系統,則須要Python2.4或者以上版本
若是是windows ,則須要PowerShell3.0而且受權遠程管理
安裝Ansible
1.從GItHUb安裝
提取Ansible代碼
git clone git://gihub.com/ansible/ansible.git --recursive
cd ./ansible
sourece ./hacking/env-setup -q 
2.若沒有安裝pip,先安裝對應python版本的pip
sudo easy_install pip
3.安裝Ansible控制機須要的python模塊
sudo pip install paramiko PyYAML Jinja2 httplib2 six
4.當更新Ansible版本時候,不但要更新git的源碼樹,還要更新git中指向Ansible自身的模塊,稱爲submoudles
git pull --rebase
git submoduble update --init --recursive
5.一旦運行env-setup 腳本,就意味着Ansible從源碼中運行起來了!默認的資源清單inventory文件是/etc/ansible/hosts
這樣,Ansible系統就安裝完成了。
Tar包安裝方式跟源碼安裝同樣,只是源代碼獲取方式不一樣
製做rpm包安裝
git clone git://gihub.com/ansible/ansible.git 
cd ./ansible
make rpm
sudo rpm -Uvh ~ /rpmbuild/ansible-*.noarch.rpm
Yum安裝方式
rpm -Uvh http://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://mirrors.zju.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo yum install ansible
pip方式安裝
sudo easy_install pip
sudo pip install ansible
配置Ansbile環境、
使用環境變量方式配置
export ANSIBLE_SUDO_USER=root
設置ansible.cfg配置參數
inventory=/etc/ansible/hosts
library=/usr/share/ansible
forks=5
sudo_user=root
remote_port=22
host_key_checking=false  是否用公鑰認證
timeout=60
log_path=/var/log/ansible.log/ansible
配置Linux主機ssh無密碼訪問
在控制機上建立密鑰,執行ssh-keygen -t rsa 有詢問直接按」回車「,將在/root/.ssh下面生成一對密鑰。
其中id_rsa爲私鑰,id_rsa.pub爲公鑰
代碼以下:
# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e0:54:fa:ad:ef:7a:a6:03:8e:3a:b8:96:af:3d:36:38 root@Server128
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|        .        |
|       o         |
|      +          |
|     o o .       |
|      . S .      |
|      .  .       |
| .o  o ..        |
|.Eo+. . ..o      |
|oo*=o   oBo      |
+-----------------+
把id_rsa.pub發到被管節點上用戶下的.ssh目錄,而且重命名authorized_keys,權限爲400
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.37.128
The authenticity of host '192.168.37.128 (192.168.37.128)' can't be established.
RSA key fingerprint is 3b:3e:2c:83:d1:cc:0e:6f:da:85:d6:fb:35:08:02:cb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.37.128' (RSA) to the list of known hosts.
root@192.168.37.129's password: 
Now try logging into the machine, with "ssh 'root@192.168.37.129'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
SSH登陸結果:
# ssh root@192.168.37.128
Last login: Fri Dec 16 22:06:42 2016 from 192.168.37.1
查看ansible版本
[root@Agent129 ~]# ansible --version
ansible 2.2.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
主機連通測試
1.修改/etc/ansible/hosts,格式爲ini 添加agent129的IP,同時定義一個webservers組包含這個IP
## green.example.com
192.168.37.128
# Ex 2: A collection of hosts belonging to the 'webservers' group
[webservers]
192.168.37.128
而後用ping模塊對主機ping
[root@Server129 ~]# ansible 192.168.37.128 -m ping
192.168.37.128 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
主機連通成功
在被管節點上批量執行命令
用Ansible的shell模塊中webservers的各服務器上顯示」hello world「
[root@Server129 ~]# ansible webservers -m shell -a '/bin/echo hello world' -i /etc/ansible/hosts 
192.168.37.128 | SUCCESS | rc=0 >>
hello world
也能夠本身建一個資源清單文件:inventory.cfg
[root@Server129 ansible]# ansible webservers -m shell -a '/bin/echo hello world' -i /etc/ansible/hosts 
192.168.37.128 | SUCCESS | rc=0 >>
hello world
[root@Server129 ansible]# ansible webservers -m command -a '/bin/echo hello world' -i /etc/ansible/hosts 
192.168.37.128 | SUCCESS | rc=0 >>
hello world
獲取幫助信息
[root@Server129 ansible]# ansible-doc -h
Usage: ansible-doc [options] [module...]
Options:
  -h, --help            show this help message and exit
  -l, --list            List available modules
  -M MODULE_PATH, --module-path=MODULE_PATH
                        specify path(s) to module library (default=None)
  -s, --snippet         Show playbook snippet for specified module(s)
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)
  --version             show program's version number and exit
  
[root@Server129 ansible]# ansible-doc -l
[DEPRECATION WARNING]: docker is kept for backwards compatibility but usage is discouraged. The module documentation details page may explain more about this rationale..
This feature will be removed in a future release. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.
 [ERROR]: unable to parse /usr/lib/python2.6/site-packages/ansible/modules/extras/cloud/misc/rhevm.py
ERROR! module rhevm has a documentation error formatting or is missing documentation
解決方法:
[root@Server129 ansible]# sed -i 's/^#deprecation_warnings = True/deprecation_warnings = False/' /etc/ansible/ansible.cfg
[root@Server129 ansible]# rm -f /usr/lib/python2.6/site-packages/ansible/modules/extras/cloud/misc/rhevm.py
Ansible調試獲取執行過程詳細信息
[root@Server129 ansible]# ansible webservers -i inventory.cfg -m ping -vvv
Using /etc/ansible/ansible.cfg as config file
Using module file /usr/lib/python2.6/site-packages/ansible/modules/core/system/ping.py
<192.168.37.128> ESTABLISH CONNECTION FOR USER: None on PORT 22 TO 192.168.37.128
<192.168.37.128> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856 `" && echo ansible-tmp-1481957126.9-135770071402856="` echo $HOME/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856 `" ) && sleep 0'
<192.168.37.128> PUT /tmp/tmpnPQrrc TO /root/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856/ping.py
<192.168.37.128> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856/ /root/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856/ping.py && sleep 0'
<192.168.37.128> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856/ping.py; rm -rf "/root/.ansible/tmp/ansible-tmp-1481957126.9-135770071402856/" > /dev/null 2>&1 && sleep 0'
192.168.37.128 | SUCCESS => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "data": null
        }, 
        "module_name": "ping"
    }, 
    "ping": "pong"
}
相關文章
相關標籤/搜索