初探ansible

来源:互联网 发布:北京海量数据离职 编辑:程序博客网 时间:2024/06/06 14:29
#ansible 源码安装和使用说明
#author='大道至简2017'


#安装环境,居于docker主机 的centos:6.8 版本(最小化安装的版本)
#各位可以根据自己的情况,使用物理机,虚拟机,或者也使用docker服务器。
#创建centos6.8 主机。
root@ubuntu120:~# docker  run --name  ansible_sample -it centos:6.8 
[root@4c2f8f82bbec /]# 




#安装系统环境:
#安装epel 源:
yum install epel-release  -y


#安装系统环境
yum install git python python-devel python-pip gcc-c++ make automake openssh openssh-server libffi libffi-devel  -y
/etc/init.d/sshd restart #如果sshd 服务已经启动,则不需要重启


#配置root密码
passwd root




#安装支持ansible的python支持环境
pip install paramiko PyYAML Jinja2 httplib2 six


#下载ansible 源码,下载目录为/home/ansible/
mkdir /home/ansible_git
cd /home/ansible_git
git clone git://github.com/ansible/ansible.git --recursive
cd /home/ansible_git/ansible
source ./hacking/env-setup
echo 'source /home/ansible_git/ansible/hacking/env-setup' >>  /etc/profile  #用户每次登陆,都导入ansible环境变量


#创建第一个客户端机器
mkdir /etc/ansible/ 
#vi  /etc/ansible/hosts
127.0.0.1


#配置ansible, 不需要检查host
#vi /etc/ansible/ansible.cfg,添加以下是内容。
 
[defaults]
host_key_checking = False


#测试:
ansible all -m ping --ask-pass


#测试结果


#添加另外一台主机:
#vi  /etc/ansible/hosts
127.0.0.1
192.168.6.96


#测试两台主机,注意,这里使用的root密码,都设置为一样。
ansible all -m ping --ask-pass






[root@4c2f8f82bbec ansible]# ansible all -m ping --ask-pass
SSH password: 
127.0.0.1 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
192.168.6.96 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
#测试查看两台机器的负载


ansible all -a 'cat /proc/loadavg' --ask-pass


[root@4c2f8f82bbec ansible]# ansible all  -a 'cat /proc/loadavg' --ask-pass
SSH password: 
127.0.0.1 | SUCCESS | rc=0 >>
0.02 0.10 0.12 1/391 18513


192.168.6.96 | SUCCESS | rc=0 >>
0.05 0.04 0.00 1/335 25829


#ansible 的基本功能已经实现。 可以登录远程服务器,执行远程操作。




可选阅读:
1. 使用明文密码
#vi cat /etc/ansible/hosts 
192.168.6.96      ansible_ssh_pass=123456
127.0.0.1      ansible_ssh_pass=123456
#测试:
[root@4c2f8f82bbec ansible]# ansible all  -a 'cat /proc/loadavg'           
127.0.0.1 | SUCCESS | rc=0 >>
0.08 0.07 0.10 1/390 18592


192.168.6.96 | SUCCESS | rc=0 >>
0.12 0.06 0.01 1/335 25921


2. ssh 如果是非22默认端口,怎样办。
#编辑/etc/ansible/hosts 在主机名或者ip后面添加:端口。
#比如 191.168.6.96:22


3.其他的api 模块在哪里找到,
#参考官网:
中午参考:http://www.ansible.com.cn/
#英文参考:
https://github.com/ansible/ansible/


4. 客户机(受控制机有什么要求)
python2.6后python2.6以上的环境。
python2.4 则要安装python-simplejson,如果没有安装python-simplejson,则执行ansible,需要加上-m raw 参数即可。


5. 怎样执行shell 命令
添加-m shell -a 'shell命令'


6. 还可以做什么?
可以做分组,可以看看ansible 的api和playbooks,具体参考中文官网或者英文官网


7. 怎样拷贝文件
 ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan"
8. 怎样添加用户
ansible all -m user -a "name=foo password=<crypted password here>"
9. 怎样删除用户
ansible all -m user -a "name=foo state=absent"
10. 怎样不调用shell, 关闭httpd服务,即使调用ansible 的api
ansible old* -m service -a "name=httpd state=stopped"
11. 如果不想使用明文密码,怎样不输入密码操作客户机。明文安全性非常低。
添加ansible主机的公钥到受控机。 



原创粉丝点击