Ansible和crontabs

Rub*_*dob 4 ansible

我是ansible的新手.我一直在写一些剧本,很棒,很棒.但是我遇到了一个非常简单的管理任务,每个管理员都必须学习如何管理.场景很常见,很多服务器:ubuntu,centos,不同客户的服务器等

我的问题是我必须如何组织我的ansible结构来管理不同服务器的crontabs?

我已经编写了可以应用于大多数服务器的playbooks,有一些管理任务:apt-get udpate,安装ntp服务器和同步,但我找不到正确的方法来建立一个ansible文件结构(main.yml) ,host_vars,文件,模板,角色等)来管理每个服务器的每个cron.

你有任何例子或建议吗?

谢谢!!!

Rub*_*dob 8

我知道我不是专家但是如果一些安慰新手和我有同样的问题也许这可以帮助.

正如我几天前写的,你正在学习ansible,你有很多服务器,你甚至可以在几分钟内在一个非常新的ubuntu/centos框中安装nginx,php-fpm,mysql等.我在说什么?不是一个,而是同时服务器,梦想.但是哦,现在你必须在lemp服务器1和lemp服务器2中安装不同的cron任务.

然后,你必须使用ansible变量.当你是ansible世界的新手时,变量可能有点棘手.

我不是说这是更好的方法,但至少,您不必为每个服务器维护单独的cron文件.

首先,我检查lemp服务器1的ansible_hostname

$ ansible lempserver1 -m setup|grep host
"ansible_hostname": "ns227962",
Run Code Online (Sandbox Code Playgroud)

如您所见,ansible返回的主机名是ns227962.然后我有一个ansible结构,如:

- main.yml | _ roles | _cron | _tasks | _main.yml

我主要有cron角色

---
- name: add line to crontab's root - backup
  cron: name="backup openvz vps" hour="5" minute="1" weekday="7"  job="/root/scripts/openvz_backup_vps > /dev/null"
  when: "ansible_hostname == 'ns227962'"
Run Code Online (Sandbox Code Playgroud)

请注意,when语句和ansible_hostname将执行此操作.

然后我应用main.yml,这就是全部

TASK: [cron | add line to crontab's root - backup] ***********
skipping: [lempserver2]
changed: [lempserver1]
Run Code Online (Sandbox Code Playgroud)

有效!:)

在其他情况下,当您具有相同的文件配置但有些部分使用模板稍有不同时会有所帮助.

现在对我来说还可以,现在我只能用一个角色集中管理crons服务器.

谢谢