龚哥哥 - 山里男儿 爱生活、做自己!
CentOS下使用Ansible自动部署
发表于 2016-10-16 | 服务器

一、服务器准备

Master        10.0.82.55
Node1       10.0.82.56
Node2       10.0.82.37

二、配置Master SSH免密码登录节点服务器

具体方法,搜索本博客中的文章

三、Master安装Ansible服务

1、yum安装

yum -y install ansible

2、配置文件   vim /etc/ansible/hosts 添加node的ip

10.0.82.56
10.0.82.37

# 可以分组 如:
[web]
10.0.82.56

[db]
10.0.82.37

四、测试

1、在远程服务器根目录创建hello目录

ansible all -a "mkdir /hello"

运行结果
10.0.82.37 | SUCCESS | rc=0 >>
10.0.82.56 | SUCCESS | rc=0 >>

2、把Master本地文件拷贝到远程服务器

ansible all -m copy -a "src=/data/www/test.txt dest=/data/www"

报错了
10.0.82.56 | FAILED! => {
    "changed": false, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "failed": true, 
    "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"

解决方案(如果受控机开启SELinux,则必须在受控机上安装libselinux-python)
ansible all -k -m yum -a "name=libselinux-python state=installed"

再次运行 ansible all -m copy -a "src=/data/www/test.txt dest=/data/www"

运行结果
10.0.82.37 | SUCCESS => {
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/data/www/test.txt", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1476215949.6-127742282482280/source", 
    "state": "file", 
    "uid": 0
}
10.0.82.56 | SUCCESS => {
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/data/www/test.txt", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0644", 
    "owner": "root", 
    "secontext": "system_u:object_r:default_t:s0", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1476215949.96-237849415762054/source", 
    "state": "file", 
    "uid": 0
}

3、查看节点服务器的某个进程

ansible all -m shell -a "ps -ef | grep nginx"

运行结果
172.17.0.4 | SUCCESS | rc=0 >>
root         68      1  0 09:55 ?        00:00:00 nginx: master process /data/soft/nginx/nginx -c /data/soft/nginx/nginx.conf
nobody       69     68  0 09:55 ?        00:00:00 nginx: worker process
root        298    293  0 09:58 pts/0    00:00:00 /bin/sh -c ps -ef | grep nginx
root        300    298  0 09:58 pts/0    00:00:00 grep nginx

172.17.0.3 | SUCCESS | rc=0 >>
root         71      1  0 08:18 ?        00:00:00 nginx: master process /data/soft/nginx/nginx -c /data/soft/nginx/nginx.conf
nobody       72     71  0 08:18 ?        00:00:00 nginx: worker process
root       1816   1811  0 09:58 pts/0    00:00:00 /bin/sh -c ps -ef | grep nginx
root       1818   1816  0 09:58 pts/0    00:00:00 grep nginx

4、更改节点服务器文件权限

ansible all -m file -a "dest=/data/www/gong.txt mode=777"

运行结果
172.17.0.4 | SUCCESS => {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "path": "/data/www/gong.txt", 
    "size": 6, 
    "state": "file", 
    "uid": 0
}
172.17.0.3 | SUCCESS => {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "path": "/data/www/gong.txt", 
    "size": 6, 
    "state": "file", 
    "uid": 0
}

4、在节点服务器上拉取一个git库

ansible all -m shell -a "cd /data/www; git clone git@git.coding.net:gongfuxiang/hello.git"

运行结果
172.17.0.4 | SUCCESS | rc=0 >>
Cloning into 'hello'...

172.17.0.3 | SUCCESS | rc=0 >>
Cloning into 'hello'...

Ansible更多使用方法 Ansible中文使用权威指南

发表评论:

TOP