ansible的常用模块配置说明及批量部署服务

ansible的常用模块配置说明及批量部署服务

ansible的常用模块配置说明,在远程服务器批量配置清华大学的仓库文件,批量部署nginx,并启动服务。 
ansible知识点:

一、Ansible特点:

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

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

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

4、通过Playbook来定制强大的配置;

二、ansible要实现管理主机,需要满足以下两点:

1、主机清单中需要配置被管理主机的主机名或者ip

2、要能够连上被管理主机(授权);

ansible的常用模块配置说明,在远程服务器批量配置清华大学的仓库文件,批量部署nginx,并启动服务。

环境:

Ansible:172.20.26.167

远程服务器:172.20.26.198、172.20.26.24

在172.20.26.167服务器上配置yum仓库,安装部署ansible

yum install epel-release -y  #配置epel仓库

yum install ansible -y  #安装ansible

ansible的常用模块配置说明及批量部署服务_第1张图片

ansible的常用模块配置说明及批量部署服务_第2张图片

[root@bogon ~]# rpm -ql ansible           #查看ansible 提供的大量脚本文件

[root@bogon ~]# rpm -ql ansible | wc -l    #统计出有17312个脚本文件

[root@bogon ~]# rpm -qc ansible         #查看ansible的配置文件

[root@bogon ~]# vim /etc/ansible/hosts

对单台服务器进行管理

172.20.26.198 ansible_ssh_pass=1

172.20.26.24 ansible_ssh_pass=1

ansible的常用模块配置说明及批量部署服务_第3张图片

保存退出

配置远程服务器免密访问

[root@bogon ~]# ssh-keygen

ansible的常用模块配置说明及批量部署服务_第4张图片

将秘钥copy到远程服务器,一路回车,输入root密码,回车即可

[root@bogon ~]# ssh-copy-id 172.20.26.198

[root@bogon ~]# ssh-copy-id 172.20.26.24

ansible的常用模块配置说明及批量部署服务_第5张图片

在172.20.26.167服务器上通过ansible 查看远程服务器的内存情况

[root@bogon ~]# ansible 172.20.26.198 -m shell -a "free -h"

[root@bogon ~]# ansible 172.20.26.24 -m shell -a "free -h"

ansible的常用模块配置说明及批量部署服务_第6张图片

也可以加上-k ,输入远程服务器root密码来进行管理,如果是一起输入多台服务器进行管理,因为只能输入一次密码,则多台服务器的root密码要一致。

ansible 172.20.26.198 -m shell -a "free -m" -k

ansible的常用模块配置说明及批量部署服务_第7张图片

ansible 172.20.26.198,172.20.26.24 -m shell -a "free -m" -k

ansible的常用模块配置说明及批量部署服务_第8张图片

如果不配置免密,也不想加上-k ,也可以将密码写入hosts配置文件里,

vim /etc/ansible/hosts

172.20.26.198 ansible_ssh_pass=1

172.20.26.24  ansible_ssh_pass=1

ansible的常用模块配置说明及批量部署服务_第9张图片

如果服务器较多的话,我们也可以配置主机组

vim /etc/ansible/hosts

ansible的常用模块配置说明及批量部署服务_第10张图片

查看磁盘信息

ansible的常用模块配置说明及批量部署服务_第11张图片

一台主机也可以归属于不同主机组,172.20.26.198 属于nginx主机组,也可以属于mysql主机组

ansible的常用模块配置说明及批量部署服务_第12张图片

ansible mysql -m shell -a "df -h"

ansible的常用模块配置说明及批量部署服务_第13张图片

command模块:创建目录

ansible nginx -m command -a "mkdir -p /tmp/discuz"

ansible的常用模块配置说明及批量部署服务_第14张图片

ansible的常用模块配置说明及批量部署服务_第15张图片

由于command模块为默认模块,所以也可以不用写,

ansible nginx -a "mkdir -p /tmp/wordpress"

ansible的常用模块配置说明及批量部署服务_第16张图片

ansible的常用模块配置说明及批量部署服务_第17张图片

上面我们创建目录,接下来我们可以来批量安装apache服务。

yum install httpd -y yum makecache  #在执行下面命令前,可以在远程服务器提前将安装源的缓存做好

ansible nginx -a "yum install httpd -y"

ansible的常用模块配置说明及批量部署服务_第18张图片

通过rpm -q httpd 在172.20.26.198,172.20.26.24服务器上查看安装情况

ansible的常用模块配置说明及批量部署服务_第19张图片

我们也可以将上面安装时提示WARNING 信息,取消显示

vim /etc/ansible/ansible.cfg

ansible的常用模块配置说明及批量部署服务_第20张图片

我们再来创建目录,就不会有警告信息了;

ansible的常用模块配置说明及批量部署服务_第21张图片

由于command 模块有一定的缺陷,不支持以下 $HOME,<,>, |, ;,&命令

ansible的常用模块配置说明及批量部署服务_第22张图片

ansible的常用模块配置说明及批量部署服务_第23张图片

ansible的常用模块配置说明及批量部署服务_第24张图片

shell模块:

可以实现在远程服务器执行shell命令,并且弥补了command的一些缺陷!

ansible nginx -m shell -a "ls /tmp/ | grep wordpress"

ansible的常用模块配置说明及批量部署服务_第25张图片

也可以将shell 设置为默认模块

vim /etc/ansible/ansible.cfg

ansible的常用模块配置说明及批量部署服务_第26张图片

ansible nginx -a "ls /tmp/ | grep wordpress"

ansible的常用模块配置说明及批量部署服务_第27张图片

copy模块:

可以实现将ansible管理主机的文件内容分发到远程服务器。

ansible nginx -m copy -a "src=/etc/fstab dest=/tmp/"

ansible的常用模块配置说明及批量部署服务_第28张图片

也可以在copy 的同时修改权限以及属主,不过需要远程服务器已有要设置的属主用户,例如jfedu用户

ansible nginx -m copy -a "src=/etc/passwd dest=/tmp/ mode=600 owner=jfedu"

ansible的常用模块配置说明及批量部署服务_第29张图片

如果copy的文件名称已存在,文件内容不一样,copy后进行更新

ansible的常用模块配置说明及批量部署服务_第30张图片

ansible的常用模块配置说明及批量部署服务_第31张图片

删除的3行被更新回来

ansible的常用模块配置说明及批量部署服务_第32张图片

如果copy的文件名称已存在,文件内容不一样,原文件还想继续保留,可以使用backup=yes 开启备份

我们删除172.20.26.198服务器上/tmp/passwd文件中的6行

ansible的常用模块配置说明及批量部署服务_第33张图片

ansible nginx -m copy -a "src=/etc/passwd dest=/tmp/ mode=600 owner=jfedu backup=yes"

ansible的常用模块配置说明及批量部署服务_第34张图片

ansible的常用模块配置说明及批量部署服务_第35张图片

ansible的常用模块配置说明及批量部署服务_第36张图片

copy 文件与copy目录是一样的,不需要加-r来递归,我们在/tmp下创建jf目录,再创建test.txt文件,现在将jf目录copy到远程服务器上

ansible nginx -m copy -a "src=/tmp/jf dest=/tmp/"

ansible的常用模块配置说明及批量部署服务_第37张图片

ansible的常用模块配置说明及批量部署服务_第38张图片

ansible的常用模块配置说明及批量部署服务_第39张图片

复制字符串:将“welcome to jfedu”字符串复制到远程服务器的/tmp下的hello文件里

ansible nginx -m copy -a "content='welcome to jfedu\n' dest=/tmp/hello"

ansible的常用模块配置说明及批量部署服务_第40张图片

fetch模块:

可以实现将远程服务器的文件(不支持直接拉取目录,可以先将目录打包成文件)拉取到ansible管理主机。

我们将远程服务器上/tmp目录下的fstab文件拉取到本地的root目录下,即使目的目录下有同名的文件,也不会有冲突,因为ansible会自动将拷贝回来的文件存放在以远程服务器IP地址为目录下再创建源文件的上一级目录,

ansible nginx -m fetch -a "src=/tmp/fstab dest=/root/"

ansible的常用模块配置说明及批量部署服务_第41张图片

ansible的常用模块配置说明及批量部署服务_第42张图片

以远程服务器IP地址为目录,是因为读取的ansible中 hosts文件中主机组里的IP信息,如果hosts文件中主机组里用主机名来设置,则会以主机名来作为目录名称,取决于hosts文件里怎么定义。

ansible的常用模块配置说明及批量部署服务_第43张图片

synchronize模块:

可以实现目录、文件的同步,主要基于rsync命令工具同步目录和文件。

ansible nginx -m synchronize -a "src=/etc/passwd dest=/tmp/"

ansible的常用模块配置说明及批量部署服务_第44张图片

由于没有ansible服务器和远程服务器均没有安装rsync导致报错

在ansible服务器安装rsync

yum install rsync -y

ansible nginx -m shell -a "yum install rsync -y"   利用ansible 对远程服务器安装rsync

ansible的常用模块配置说明及批量部署服务_第45张图片

rsync 都安装好后,再运行synchronize 模块命令

ansible nginx -m synchronize -a "src=/etc/passwd dest=/tmp/"

ansible的常用模块配置说明及批量部署服务_第46张图片

在172.20.26.198、172.20.26.24服务器上查一下同步情况

ansible的常用模块配置说明及批量部署服务_第47张图片

ansible的常用模块配置说明及批量部署服务_第48张图片

从172.20.26.24服务器上的/etc/passwd文件拉取目录到本地tmp临时目录下,使用pull参数。

ansible 172.20.26.24 -m synchronize -a "src=/etc/passwd dest=/tmp/ mode=pull"

ansible的常用模块配置说明及批量部署服务_第49张图片

file模块:

该模块可以实现对文件的基本操作。比如,创建文件或目录、删除文件或目录、修改文件权限等。

#创建普通文件:在远程服务器上/tmp/目录下创建password文件

ansible nginx -m file -a "name=/tmp/password state=touch"

ansible的常用模块配置说明及批量部署服务_第50张图片

ansible的常用模块配置说明及批量部署服务_第51张图片

ansible的常用模块配置说明及批量部署服务_第52张图片

# 创建目录:在远程服务器上/tmp/目录下创建web目录

ansible nginx -m file -a "name=/tmp/web state=directory"

ansible的常用模块配置说明及批量部署服务_第53张图片

ansible的常用模块配置说明及批量部署服务_第54张图片

ansible的常用模块配置说明及批量部署服务_第55张图片

# 删除文件:将远程服务器上/tmp/目录下的password文件删除

ansible nginx -m file -a "name=/tmp/password state=absent"

ansible的常用模块配置说明及批量部署服务_第56张图片

ansible的常用模块配置说明及批量部署服务_第57张图片

ansible的常用模块配置说明及批量部署服务_第58张图片

# 创建软连接:将ansible服务器上etc/passwd软连接到远程服务器上tmp目录下的passwd文件

创建远程服务器上tmp目录下的passwd文件与ansible服务器上etc/passwd的软连接

ansible nginx -m file -a "src=/etc/passwd dest=/tmp/password state=link"

ansible的常用模块配置说明及批量部署服务_第59张图片

ansible的常用模块配置说明及批量部署服务_第60张图片

ansible的常用模块配置说明及批量部署服务_第61张图片

# 创建新文件,顺便设置文件属性:

ansible nginx -m file -a "name=/tmp/passwd mode=600 owner=jfedu state=touch"

ansible的常用模块配置说明及批量部署服务_第62张图片

# 修改文件属性:

ansible nginx -m file -a "name=/tmp/passwd mode=644 owner=root"

ansible的常用模块配置说明及批量部署服务_第63张图片

ansible的常用模块配置说明及批量部署服务_第64张图片

ansible的常用模块配置说明及批量部署服务_第65张图片

配置清华大学源:

方法1、在ansible服务器上配置好tsinghua.repo文件

vim /etc/yum.repos.d/tsinghua.repo

[tsinghua]

name= centos 7 tsinghua repo

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64

anabled=1

gpgcheck=1

gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPGKEY-EPEL-7"

ansible的常用模块配置说明及批量部署服务_第66张图片

然后通过copy 模块,将ansible服务器上的tsinghua.repo文件拷贝到远程服务器上,即可

ansible nginx -m copy -a "src=/etc/yum.repos.d/tsinghua.repo dest=/etc/yum.repos.d"

方法2、直接用下面的命令对远程服务器批量部署清华大学的仓库文件

ansible nginx -m yum_repository -a "name=tsinghua description='centos 7 tsinghua repo' baseurl='https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64 /' enabled=yes gpgcheck=yes gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPGKEY-EPEL-7"

ansible的常用模块配置说明及批量部署服务_第67张图片

ansible的常用模块配置说明及批量部署服务_第68张图片

ansible的常用模块配置说明及批量部署服务_第69张图片

批量部署nginx,并启动服务

远程服务器需要更新yum源

yum install epel-release -y

yum makecache

yum update

更新yum缓存

使用ansible的playbook,进行批量部署nginx,并启动服务

vim nginx.yml  创建yml配置文件

---

- hosts: nginx

  remote_user: root

 

  tasks:

    - name: auto install nginx

      yum: name=nginx

    - name: start nginx

      service: name=nginx state=started enabled=yes

ansible的常用模块配置说明及批量部署服务_第70张图片

ansible-playbook -C nginx.yml  检查nginx.yml 语法是否正确?

ansible的常用模块配置说明及批量部署服务_第71张图片

ansible-playbook nginx.yml   执行playbook命令

ansible的常用模块配置说明及批量部署服务_第72张图片

检查远程服务器nginx服务安装以及启动情况

ansible的常用模块配置说明及批量部署服务_第73张图片

ansible的常用模块配置说明及批量部署服务_第74张图片

批量部署nginx,并启动服务配置完成。

你可能感兴趣的:(Linux运维,ansible)