ansible 服务器批量管理

选择ansible的缘由

不须要安装安装客户端,采用ssh链接,小规模服务器方便无压力linux

安装ansible

本次采用docker的方式安装ansible,这样跨平台部署方便,windows,linux,mac 均可以快速的安装部署。 已经写好了配置文件,只须要执行如下命令既可安装和启动ansibledocker

cd ansible
# build 镜像
docker-compose build
# 启动container
docker-compose up -d

# 进入container 并执行ansible 命令
cary@caoleideMacBook-Pro:~/Code/ansible$ docker-compose exec ansible bash
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
[console]# ansible-playbook app.yml  -k
sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
SSH password:

PLAY [ansible playbook] ***********************************************************************************************************************************************
sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)

TASK [Gathering Facts] ************************************************************************************************************************************************
ok: [192.168.33.12]
ok: [192.168.33.11]
ok: [192.168.33.13]

TASK [copy file] ******************************************************************************************************************************************************
changed: [192.168.33.12]
changed: [192.168.33.11]
changed: [192.168.33.13]

RUNNING HANDLER [up status] *******************************************************************************************************************************************
changed: [192.168.33.13]
changed: [192.168.33.11]
changed: [192.168.33.12]

RUNNING HANDLER [restart docker] **************************************************************************************************************************************
changed: [192.168.33.12]
changed: [192.168.33.11]
changed: [192.168.33.13]

PLAY RECAP ************************************************************************************************************************************************************
192.168.33.11              : ok=4    changed=3    unreachable=0    failed=0
192.168.33.12              : ok=4    changed=3    unreachable=0    failed=0
192.168.33.13              : ok=4    changed=3    unreachable=0    failed=0

[console]#

次命令执行了文件的拷贝,拷贝完成后执行程序的启动并判断状态windows

定义一组任务

输入图片说明 上图的配置文件定义了一组任务,bash

  • hosts 是指所须要管理的服务器组, all 表明全部,也能够指定组名
  • remote_user 是经过ssh远程链接使用的用户名
  • become 参数是指是否启用sudo 来提升权限,若是是root用户此参数就没有意义
  • tasks 定义一组任务 一个name是一个任务的名称,其中copy是ansible的文件拷贝模块(其实是rsync)只同步有变化的文件,src是指源文件,dest是指远程服务器上的目录。
  • handlers 是一些命令,tasks中能够经过notify通知它里面的一个或多个命令,等tasks执行完后再执行handlers中的命令。

输入图片说明

定义被管理的服务器

hosts 配置文件定义的是被管理服务器的ip地址或主机名 [swarm]是组名的写法,能够经过指定组名批量管理组中的服务器服务器

执行任务组

ansible-playbook app.yml  -k

执行一组命令使用 ansible-playbook 并指定定义命令的配置文件(采用yml)格式app

  • 参数 -k 是指使用密码 由于在app.yml中已经指定用户,全部这里输入的密码是此用户的密码
相关文章
相关标签/搜索