OS | CentOS-6.5-x86_64 和debian-7.4.0-amd64 |
Ansible | ansible-1.5.tar.gz |
客户端IP | 192.168.0.10 |
### 个人习惯安装是基础软件包
# apt-get install -y build-essential
# apt-get install -y vim sudo ntpdate unzipcmake libncurses5-dev tcpdump
### 开始安装ansible
# apt-get install python-dev python-yamlpython-paramiko python-jinja2 git
//git要不控制版本可以不安装
# wget https://pypi.python.org/packages/source/a/ansible/ansible-1.5.tar.gz
# tar ansible-1.5.tar.gz
# cd ansible-1.5
# make && make install
# whereis ansible
ansible: /etc/ansible /usr/local/bin/ansible/usr/share/ansible
### /usr/share/ansible 模版路径
# mkdir /etc/ansible
# cp ansible-1.5/examples/ansible.cfg/etc/ansible/
# cp ansible-1.5/examples/ansible.cfg/etc/ansible/
# yum install ansible
# whereis ansible
ansible: /usr/bin/ansible /etc/ansible/usr/share/ansible /usr/share/man/man1/ansible.1.gz
# useradd ansible -s /bin/bash -m //服务端客户端都创建用户ansible
# su - ansible //服务端生成ssh-key 并分发到所有客户端
$ ssh-keygen -t ras //一直回车键到完成
$ ssh-copy-id -i ~/.ssh/id_rsa.pub ansible@192.168.0.10//也可scp等熟悉的方法拷贝过去
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys //服务器本机测试用
$ ssh -p 2221 ansible@192.168.24.15 //测试ssh可否
#vim /etc/ansible/hosts //定义主机,支持IP和域名,支持分组
[local]
127.0.0.1
[nginx]
192.168.0.10 //客户端IP地址
#vim /etc/ansible/ansible.cfg //
[defaults]
# some basic default values...
hostfile = /etc/ansible/hosts
library = /usr/share/ansible
remote_tmp = $HOME/.ansible/tmp
pattern = *
forks = 5
poll_interval = 15
sudo_user = ansible
#ask_sudo_pass = True
#ask_pass = True
transport = smart
remote_port = 2221
#visudo
ansible ALL=(ALL) NOPASSWD:ALL //设置sudo
$ansible all -m ping //使用ping模块测试,以下显示成功,可以继续其他操作
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}
192.168.0.10 | success >> {
"changed": false,
"ping": "pong"
}
1、ansible命令
语法ansible <host-pattern> [options]
ansible <pattern_goes_here> -m<module_name> -a <arguments>
选项
-i 设备列表路径,可制定一些动态路径
-f 并行任务数
–private-key 私钥路径
-m 模块名
-M 模块夹在路径
-a 参数
-k 登陆密码
-K sudo密码
-t 输出结果保存路径
-B 后台运行超时时间
-P 调查后台程序时间
-u 执行用户
-U sudo用户
-l 限制设备范围
-s是此用户sudo无需输入密码
2、体验命令操作
(1)用户类操作
$ ansible webtest -m group -a"name=jjgame state=present" -s
$ ansible webtest -m user -a"name=utest groups=jjgame state=present" -s
$ ansible webtest -m user -a"name=utest state=absent remove=yes" -s
(2)服务安装管理
$ ansible local -a ‘sudo apt-get -y installnginx‘
$ ansible local -a "sudo/etc/init.d/nginx stop"
$ ansible local -a "sudo/etc/init.d/nginx start"
$ ansible webtest -m service -a "name=nginxstate=running" -s
(3)其他测试过的
$ ansible datacenter -a ‘ls -l /root‘ -s
$ ansible datacenter -a ‘mv/root/old.tar.gz /root/new.tar.gz‘ -s
$ ansible datacenter -m file -a‘path=/root/new.tar.gz‘ -s //查看文件属性
$ ansible datacenter -a ‘rm -rf/root/directory‘ -s //删除目录
$ ansible all -m command -a "/bin/echohello" --ask-pass
$ ansible all -m ping --ask-pass -u root
$ ansible all -m script -a"/root/hequan/shell/t.sh" -k
$ ansible all -m copy -a"src=/root/hequan/shell/t.sh dest=/tmp/ mode=755 owner=rootgroup=root" -k -u root
$ ansible all -m file -a"dest=/tmp/t.sh mode=755 owner=root group=root" -k -u root
$ ansible all -i /etc/ansible/serverlist -mshell -a "/tmp/t.sh" -k -u root
$ ansible webtest -m get_url -a"url=http://192.168.0.8/sa/ sh.tar.gz dest=/tmp/" -s
$ ansible webtest -a "sudo tar zxvf/tmp/ sh.tar.gz -C /tmp" -s //不指定解压目录,会解压到/home/ansible目录下
$ ansible webtest -a "sudo/tmp/lansa_sh/t.sh" –s
#### 以上内容刚学的,努力进行中……
本文出自 “老瓦房” 博客,请务必保留此出处http://laowafang.blog.51cto.com/251518/1380909
自动化运维ansible学习笔记,布布扣,bubuko.com
原文:http://laowafang.blog.51cto.com/251518/1380909