选择ansible的原因
不需要安装安装客户端,采用ssh连接,小规模服务器方便无压力
安装ansible
本次采用docker的方式安装ansible,这样跨平台部署方便,windows,linux,mac 都可以快速的安装部署。 已经写好了配置文件,只需要执行以下命令既可安装和启动ansible
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]#
次命令执行了文件的拷贝,拷贝完成后执行程序的启动并判断状态
定义一组任务
上图的配置文件定义了一组任务,
- 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)格式
- 参数 -k 是指使用密码 因为在app.yml中已经指定用户,所有这里输入的密码是此用户的密码