6.6 自动化运维工具--ansible

1.特点

  1. 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

  2. 默认使用SSH协议对设备进行管理;

  3. 有大量常规运维操作模块,可实现日常绝大部分操作;

  4. 配置简单、功能强大、扩展性强;

  5. 支持API及自定义模块,可通过Python轻松扩展;

  6. 通过Playbooks来定制强大的配置、状态管理;

  7. 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

  8. 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

2.yum安装

# yum install epel-release -y
# yum install ansible –y

3.修改配置文件

# ansible-config init --disabled -t all > /etc/ansible/ansible.cfg

# vim /etc/ansible/ansible.cfg

仅修改成False,去掉前面的;

host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例

4.ansible主机清单

# vim /etc/ansible/hosts

设置一个组,写要连接的远程主机ip

[mysql_test]
192.168.253.159
192.168.253.160
192.168.253.153
192.168.153.[199:202]

给组一个变量vars,设置用户密码,对组都启用

[mysql_test]
192.168.253.159
192.168.253.160
192.168.253.153

[mysql_test:vars]
ansible_user="root"
ansible_password="1"

5.命令

ansible <host-pattern> [-f forks] [-m module_name] [-a args]
ansible 主机清单中的主机组 -f 开启线程数 -m 模块 -a 模块需要的参数

ansible -h查看帮助

6.command模块

命令模块接受命令名称,后面是空格分隔的列表参数。给定的命令将在所有选定的节点上执行。它不会通过shell进行处理,比如$HOME和操作如"<",">","|",";","&" 工作(需要使用(shell)模块实现这些功能)。注意,该命令不支持| 管道命令。

chdir    # 在执行命令之前,先切换到该目录

# ansible web -m command -a 'chdir=/data/ ls'  #先切换到/data/ 目录,再执行“ls”命令

executable # 切换shell来执行命令,需要使用命令的绝对路径

free_form   # 要执行的Linux指令,一般使用Ansible的-a参数代替。

creates   # 一个文件名,当这个文件存在,则该命令不执行,可以用来做判断

# ansible web -m command -a 'creates=/data/aaa.jpg ls'  #如果/data/aaa.jpg存在,则不执行“ls”命令

removes    # 一个文件名,这个文件不存在,则该命令不执行

# ansible web -m command -a 'removes=/data/aaa.jpg cat /data/a' #如果/data/aaa.jpg存在,则执行“cat /data/a”命令

7.shell模块

shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等。

# ansible web -m shell -a 'cat /etc/passwd |grep root'

8.copy模块

这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。

src     #被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径。如果路径是一个目录,则会递归复制,用法类似于"rsync"

# ansible web -m copy -a 'src=~/hello dest=/data/hello'  #把本地root下的hello拷贝给远程主机的/data/hello

content  #用于替换"src",可以直接指定文件的值

# ansible web -m copy -a 'content="I am keer\n" dest=/data/name mode=666' #给远程主机/data/下生成name文件并设置666权限

dest    #必选项,将源文件复制到的远程主机的绝对路径

backup   #当文件内容发生改变后,在覆盖之前把源文件备份,备份文件包含时间信息

# ansible web -m copy -a 'content="I am keerya\n" backup=yes dest=/data/name mode=666'  #修改后backup=yes 表示覆盖备份

directory_mode    #递归设定目录的权限,默认为系统默认权限

force    #当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes"

others #所有的 file 模块中的选项可以在这里使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值