Ansible自动化运维工具使用详解

环境准备:

3台主机     1个控制节点 两个被控制节点

解析:本地互相解析(三台机器都配置)

vim /etc/hosts

192.168.11.191 server    控制节点

192.168.11.192 slave-1   被控制节点

192.168.11.193 slave-2   被控制节点

配置完解析后在配置ssh公钥认证:控制节点需要发送ssh公钥给所有被控制节点

ssh-keygen

ssh-copy-id -i 192.168.11.192

ssh-copy-id -i 192.168.11.193

所有机器:

systemctl stop firewalld && setenforce 0   关闭防火墙和selinux

安装:控制节点

1. 配置EPEL网络yum源

yum install -y epel-release

2.安装ansible

yum install -y ansible

3.查看帮助

ansible --help

4.查看版本

ansible --version

ansible---inventory主机清单

官方文档: http://docs.ansible.com/ansible/intro_inventory.html#>

inventory文件通常用于定义要管理主机的认证信息,例如ssh登录用户名、密码以及key相关信息

查看配置文件:

rpm  -qc ansible

-q:---query查询

1.主配置文件:

/etc/ansible/ansible.cfg  #主要设置一些ansible初始化的信息,比如日志存放路径、模块、等配置信息

2.主机清单文件:

默认位置/etc/ansible/hosts

1.添加主机或者主机组:

vim /etc/ansible/hosts  #在最后追加被管理端的机器

slave-1                     #单独指定主机,可以使用主机名称或IP地址

2.添加主机组:

[slave]        #使用[]标签指定主机组 ----标签自定义

192.168.11.192       #如果未解析添加ip

slave-2     #解析添加主机名

3.为一个组指定变量,组内每个主机都可以使用该变量:

[slave:vars]         #设置变量,vars--

ansible_ssh_port=22     

ansible_ssh_user=root   

ansible_ssh_private_key_file=/root/.ssh/id_rsa  

ansible_ssh_pass=test      #也可以定义密码,如果没有互传秘钥可以使用密码。

Ansible Inventory 常见的内置参数:

Ansible自动化运维工具使用详解_第1张图片

查看组内主机列表:

语法:ansible  组名  --list-hosts

ansible slave --list-hosts

Ansible自动化运维工具使用详解_第2张图片

使用ping模块检查ansible节点的连通性:

指定单台机器

ansible slave-1 -m ping -o   

同时指定多台机器:

ansible slave-1,slave-2 -m ping -o

执行shell命令:

ansible slave-1 -m shell -a 'uptime'

不加 -m  默认是 command 模块

ansible slave-1 -a 'uptime'

重定向输出到本地文件中:

ansible slave-1 -m shell -a 'df -Th' > /opt/a.txt

Ansible自动化运维工具使用详解_第3张图片

常用模块

1.远程复制备份模块:copy

模块参数详解:  

src=:指定源文件路径

dest=:目标地址(拷贝到哪里)

owner:指定属主

group:指定属组

mode:指定权限,可以以数字指定比如0644

backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no

vim a.txt  #创建一个测试文件

123123

ansible slave -m copy -a 'src=/root/a.txt dest=/opt owner=root group=root mode=644' -o

vim a.txt  #追加如下内容

123123

321321

ansible slave -m copy -a 'src=/root/a.txt dest=/opt/ owner=root group=root mode=644 backup=true' -o

注释:如果文件没有变化,不会备份。只有文件内容不同,才会做备份。

登录被控制机器其中一台查看

  第一次

  第二次

2.软件包管理 yum模块

安装apache

ansible slave-1 -m yum -a "name=httpd state=latest" -o

state=     #状态是什么,干什么

state=absent       用于remove安装包

state=latest       表示最新的

state=removed      表示卸载

Ansible自动化运维工具使用详解_第4张图片

到被控制节点看一下

Ansible自动化运维工具使用详解_第5张图片

卸载软件:

ansible slave-1 -m yum -a "name=httpd state=removed" -o

到被控制节点看一下

3.服务管理service模块

ansible slave-1 -m service -a "name=httpd state=started" #启动

ansible slave-1 -m service -a "name=httpd state=stopped" #停止

ansible slave-1 -m service -a "name=httpd state=restarted" #重启

ansible slave-1 -m service -a "name=httpd state=started enabled=yes" #开机启动

ansible slave-1 -m service -a "name=httpd state=started enabled=no"  #开机关闭

4.文件模块file

模块参数详解:  

owner:修改属主

group:修改属组

mode:修改权限

path=:要修改文件的路径

recurse:递归的设置文件的属性,只对目录有效

        yes:表示使用递归设置

state:  创建新的文件或者目录

touch:创建一个新的空文件

directory:创建一个新的目录,当目录存在时不会进行修改

#创建一个文件

ansible slave-1 -m file -a 'path=/opt/aaa.txt mode=777 state=touch'

Ansible自动化运维工具使用详解_第6张图片

到被控制节点看一下 

#创建一个目录

ansible slave-1 -m file -a 'path=/opt/aaa mode=777 state=directory'

Ansible自动化运维工具使用详解_第7张图片

到被控制节点看一下

5.收集信息模块setup

ansible slave-1 -m setup  #收集所有信息

ansible slave-1 -m setup -a 'filter=ansible_python_version'   只查询ansible版本信息filter过滤

Ansible自动化运维工具使用详解_第8张图片

  

你可能感兴趣的:(运维,自动化,linux,服务器,centos)