四台服务器:

ansible: 管理端

node01 node02 node03: 被管理节点

1) 安装

[root@ansible ~]# yum install ansible -y

2) 查看帮助

[root@ansible ~]# ansible-doc -l | wc -l    # 查看模块数量

[root@ansible ~]# ansible-doc -s yum        # 查看yum模块的参数

[root@ansible ~]# ansible-doc yum           # 查看相关帮助信息 (搜索/EXAMPLES)

[root@ansible ~]# ansible node03 -m setup   # 获取对端节点的内置相关变量(主机名 ip地址等)

3) 如何查看某个模块的详细帮助信息

    查看源代码: /usr/lib/python2.7/site-packages/ansible/modules/packaging/os/yum.py

    ansible-doc yum             # 查看相关帮助信息 (搜索/EXAMPLES)

常用四大模块:

    yum copy file service

几个重要概念:

    安装present

    卸载absent

    升级latest

    排除exclude

    指定仓库enablerepo

语法格式:

    ansible 主机名或组名 -m 指定模块 -a 具体命令

yum模块:

#示例1: 安装当前最新的apache软件, 如果存在则更新

[root@ansible ~]# ansible group1 -m yum -a "name=httpd state=latest"

#示例2: 安装当前最新的apache软件, 通过本地仓库安装

[root@ansible ~]# ansible group1 -m yum -a "name=httpd state=latest enablerepo=c7-local-http"

#示例3: 删除apache软件

[root@ansible ~]# ansible group1 -m yum -a "name=httpd state=absent"

copy模块:

#示例1: 将本地的httpd.conf文件Listen端口修改为8080, 然后推送到远端服务器

[root@ansible ~]# ansible group1 -m copy -a "src=/etc/ansible/source_code/copy_module/httpd.conf dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=644"

#示例2: 将本地的httpd.conf文件Listen端口修改为8088, 然后推送到远端, 检查远端是否存在上一次的备份文件

[root@ansible ~]# ansible group1 -m copy -a "src=/etc/ansible/source_code/copy_module/httpd.conf dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=644 backup=yes"

# 查看是否有对应的备份文件

[root@ansible ~]# ssh node01 ls /etc/httpd/conf/httpd\*

#示例3: 往远程的主机文件中写入内容

[root@ansible ~]# ansible group1 -m copy -a "content='Hello World......\n'  dest=/var/www/html/index.html"

# 校验对端服务器对应的文件内容是否已经修改

[root@ansible ~]# ssh node01 cat /var/www/html/index.html

file模块:

#示例1: 创建文件/var/www/html/hostname.html, 并设定属主 属组 权限

[root@ansible ~]# ansible group1 -m file -a "path=/var/www/html/hostname.html state=touch owner=apache group=apache mode=644"

# 查看文件否创建成功

[root@ansible copy_module]# ssh node01 ls -lt /var/www/html/hostname.html

#示例2:  创建目录/var/www/html/imgs, 并设定属主 属组 权限

[root@ansible ~]# ansible group1 -m file -a "path=/var/www/html/imgs state=directory owner=apache group=apache mode=755"

[root@ansible ~]# ssh node01 ls -ld /var/www/html/imgs

#示例3:  递归授权目录的方式

[root@ansible ~]# ansible group1 -m file -a "path=/var/www/html/ owner=apache group=apache mode=755"

[root@ansible ~]# ansible group1 -m file -a "path=/var/www/html/ owner=apache group=apache recurse=yes" # 递归授权

service模块:

[root@ansible ~]# ansible group1 -m service -a "name=httpd state=stopped"   # 先停止服务

查看服务状态:

[root@ansible ~]# ssh node01 systemctl status httpd | grep 'Active: '

   Active:  inactive (dead) since   # stopped状态

#示例1:  启动Httpd服务

[root@ansible ~]# ansible group1 -m service -a "name=httpd state=started"

查看服务状态:

[root@ansible ~]# ssh node01 systemctl status httpd | grep 'Active: '

   Active:  active (running) since Mon  # running状态

#示例2:  重载Httpd服务

[root@ansible ~]# ansible group1 -m service -a "name=httpd state=reloaded"

#示例3:  重启Httpd服务

[root@ansible ~]# ansible group1 -m service -a "name=httpd state=restarted"

#示例4:  停止Httpd服务

[root@ansible ~]# ansible group1 -m service -a "name=httpd state=stopped"

#示例5:  启动Httpd服务, 并加入开机自启

[root@ansible ~]# ansible group1 -m service -a "name=httpd state=started enabled=yes"



 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐