开始
我读过许多有关 Ansible 的好文章和书籍,但从来没有在“我必须现在就把这个做好!”的情况下读过。而现在 —— 好吧,就是现在!
在重读这些文档时,我发现它们主要是在讨论如何从 GitHub 开始安装并使用 Ansible,这很酷。但是我真的只是想尽快开始,所以我使用 DNF 和 Fedora 仓库中的版本在我的 Fedora 工作站上安装了它,非常简单。
但是后来我开始寻找文件位置,并尝试确定需要修改哪些配置文件、将我的剧本保存在什么位置,甚至一个剧本怎么写以及它的作用,我脑海中有一大堆(到目前为止)悬而未决的问题。
因此,不不需要进一步描述我的困难的情况下,以下是我发现的东西以及促使我继续前进的东西。
配置
Ansible 的配置文件保存在 /etc/ansible
中,这很有道理,因为 /etc/
是系统程序应该保存配置文件的地方。我需要使用的两个文件是 ansible.cfg
和 hosts
。
ansible.cfg
在进行了从文档和线上找到的一些实践练习之后,我遇到了一些有关弃用某些较旧的 Python 文件的警告信息。因此,我在 ansible.cfg
中将 deprecation_warnings
设置为 false
,这样那些愤怒的红色警告消息就不会出现了:
-
deprecation_warnings = False
这些警告很重要,所以我稍后将重新回顾它们,并弄清楚我需要做什么。但是现在,它们不会再扰乱屏幕,也不会让我混淆实际上需要关注的错误。
hosts 文件
与 /etc/hosts
文件不同,hosts
文件也被称为清单文件,它列出了网络上的主机。此文件允许将主机分组到相关集合中,例如“servers”、“workstations”和任何你所需的名称。这个文件包含帮助和大量示例,所以我在这里就不详细介绍了。但是,有些事情你必须知道。
主机也可以列在组之外,但是组对于识别具有一个或多个共同特征的主机很有帮助。组使用 INI 格式,所以服务器组看起来像这样:
-
[servers]
-
server1
-
server2
-
......
这个文件中必须有一个主机名,这样 Ansible 才能对它进行操作。即使有些子命令允许指定主机名,但除非主机名在 hosts
文件中,否则命令会失败。一个主机也可以放在多个组中。因此,除了 [servers]
组之外,server1
也可能是 [webservers]
组的成员,还可以是 [ubuntu]
组的成员,这样以区别于 Fedora 服务器。
Ansible 很智能。如果 all
参数用作主机名,Ansible 会扫描 hosts
文件并在它列出的所有主机上执行定义的任务。Ansible 只会尝试在每个主机上工作一次,不管它出现在多少个组中。这也意味着不需要定义 all
组,因为 Ansible 可以确定文件中的所有主机名,并创建自己唯一的主机名列表。