Ansible Tower的安装程序【SETUP.SH】有个很好的功能是:
1. 备份
2. 恢复

具体的使用可以看下这个文档:

Ansible Tower:备份与恢复

但是上面文档的问题是:
1. 这个功能只能通过命令行去目标服务器上执行
2. 这个功能的备份文件只会在当前目录生成,而不能在其他的指定目录中生成

因此,本文提供的代码将该功能转换成了ANSIBLE TOWER可以引用的GIT代码,以便于TEMPLATE的书写。

代码在这里:
https://github.com/adamhuan/ansible_maintain.git

先介绍下代码中,和原来安装包不一样的部分,以便于朋友们理解这些代码是如何运行的。


如上,其中【ANSIBLE_BACKUP】是我的Ansible的备份代码。

一、修改点:文件【do_backup.yml】

do_backup.yml,是后面ANSIBLE TOWER需要执行的PLAYBOOK。
如上,其中写明了执行的命令。

因为setup.sh,在项目目录里,所以加了【{{ playbook_dir }}】,告知ANSIBLE TOWER文件setup.sh的位置。
并且因为ANSIBLE TOWER下载下来的GIT文件存在权限问题,所以对于该SETUP.SH,不能直接执行,需要在前面加上【sh xxxxx】执行。

如果不这样,你会在稍后的ANSIBLE TOWER中执行的时候,会遇到这样的报错:
1. 权限问题:

2. 找不到命令:

二、修改点:【roles/backup/defaults/main.yml】
第二个修改地方就是backup这个role的main.yml文件。

下面的是当前我修改后的状态:

而前面修改的记录,在我本地的GITLAB中有记录,可以截图给朋友们看看:

可以看到,原来【backup_dest】是【”{{ playbook_dir }}/”】,现在已经被修改成了【/backup/ansible_data/】。
也就是我期望的备份文件被保存的路径。

该路径如果服务器中不存在,会由ANSIBLE自己创建。

三、roles
roles部分,只选取了BACKUP.YML中需要的三个roles目录:

backup.yml

backup.yml,保持了原样没有变动。

四、inventory

文件:inventory

原安装介质中的inventory也保持了原样没有改变。
该文件是setup.sh执行过程中所必须的。

否则就会出现这样的错误:

fatal: [10.158.1.46]: FAILED! => {“changed”: true, “cmd”: [“sh”, “/var/lib/awx/projects/_13__gitlab_ansible_maintain/Ansible_Backup_Restore/setup.sh”, “-b”], “delta”: “0:00:00.019604”, “end”: “2019-01-07 11:25:50.299195”, “msg”: “non-zero return code”, “rc”: 64, “start”: “2019-01-07 11:25:50.279591”, “stderr”: “”, “stderr_lines”: [], “stdout”: “[error] No inventory file could be found at inventory.\nRun ./configure to create one, or specify one manually with -i.”, “stdout_lines”: [“[error] No inventory file could be found at inventory.”, “Run ./configure to create one, or specify one manually with -i.”]}

————————————
以上就是为了让备份任务在ANSIBLE TOWER中可以被调用,而做出的修改。

下面,开始配置ANSIBLE TOWER中的TEMPLATE。

INVENTORIES:

指向ANSIBLE TOWER服务器所在的主机。

CREDENTIALS:

给出该服务器的操作系统口令。

PROJECT:

指向上面的ANSIBLE BACKUP所在的GIT的地址,并且要保证上图中高亮的【REVISON】是当前GIT最新的版本。

当前GIT的版本:

TEMPLATE:

注意:
INVENTORY,指向ANSIBLE TOWER所在的目录
CREDENTIAL,指向该服务器的认证信息
PROJECT,指向代码所在的GIT
PLAYBOOK,指向前面我们提到的do_backup.yml,以便于后面可以直接运行我们每次要在服务器上执行的【./setup.sh -b】

至此,TEMPLATE,任务模板的配置就完成了。
——————————————————————

验证。

在运行(LAUCH)这个TEMPLATE(任务模板)前,我们先看看我们目标路径的状态:

我们的目标路径是:/backup/ansible_data
为了演示ANSIBLE可以自动创建目录,我上面将/backup/ansible_data换了名字,这样该目录下就没有ansible_data目录了。

理想情况是,当任务模板执行完成后:
1. 会自行创建ansible_data
2. ansible_data中会有一份当前ANSIBLE TOWER的备份数据。

下面开始执行:


可以看到,任务已经成功执行了。

再看看服务器上目录的情况:

可以看到,目录确实被自动创建了,并且,备份数据已经生成了。

至此,ANSIBLE TOWER的备份任务,设置完成。
——————————————————————
Done。

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒