在Ansible 1.7中,我可以使用命令行中的–tags来仅运行该剧本任务的一个子集。 但是我想要将自己的作品烘焙到只有与标签匹配的任务中才能运行一组angular色。 也就是说,我不想通过命令行来传递它,因为每次都是一样的。 起初我以为是这个命令,但是这却做了相反的事情:用这些标签标记任务,而不是根据这个标签过滤出来。 roles: – { role: webserver, port: 5000, tags: [ 'web', 'foo' ] } 我可以想象实现这个使用条件,但标签将是一个更加优雅的方式来实现这一点。
是否有可能在angular色中重用angular色? 我不是说通过在一个angular色的meta / main.yml文件中定义依赖关系,而是直接在另一个angular色的tasks / main.yml中包含angular色? 例如,我在angular色中定义了几个基本angular色,在angular色中定义了一些更高层次的angular色。 除了一些特定的任务外,我还希望高层angular色包括一些基本angular色。 playbooks/ rolebooks/ some_role/ roles/ webtier/ tasks/ main.yml 在playbooks / roles / webtier / tasks / main.yml中: – shell: echo 'hello' – { role: rolebooks/some_role } – shell: echo 'still busy' 谢谢
这是我正在使用的剧本的一个片段( server.yml ): – name: Determine Remote User hosts: web gather_facts: false roles: – { role: remote-user, tags: [remote-user, always] } 我的主机文件有不同的服务器组,例如 [web] xxxx [droplets] xxxx 现在我想执行ansible-playbook -i hosts/<env> server.yml并从server.yml覆盖hosts: web来运行[droplets]这个剧本。 我可以直接重写一次,不直接编辑server.yml吗? 谢谢。
我可以使用getent和awk组合来做到这一点: getent passwd $user | awk -F: '{ print $6 }' getent passwd $user | awk -F: '{ print $6 }' 为了参考,在木偶我可以使用一个自定义的事实,就像这样: require 'etc' Etc.passwd { |user| Facter.add("home_#{user.name}") do setcode do user.dir end end } …将用户的主目录作为home_<user name>事实提供。 编辑: 我需要得到家的任意用户的主目录的目录,不仅是用于与Ansible服务器连接的目录。
是否有一个绝对的path到当前正在执行的剧本? 一些编辑… 我想做什么? 我正在运行/创build一个对本地主机的可靠脚本来configuration一个MySQL泊坞窗,并希望相对于安全脚本安装数据卷。 例如,假设我已经检出一个存储库到~/branch1/ ,然后运行ansible-playbook dev.yml我认为它应该将卷保存到~/branch1/.docker_volume/ 。 如果我从~/branch2运行它,那么它应该将卷configuration为~/branch2/.docker_volume/ 。 我还是Ansible的新手。 有没有更好的办法?
如何通过Ansible在任务中将多个单个文件复制到远程节点? 我试图复制我的任务中的复制模块行来定义文件,但它只复制第一个文件。
根据Ansible文档, 手册是: …这是一个非常简单的configurationpipe理和多机器部署系统的基础,与已经存在的系统pipe理和多机部署系统不同,它非常适合部署复杂的应用程序。 而且,根据同样的文件, angular色是: …基于已知文件结构自动加载某些vars_files,任务和处理程序的方式。 按angular色分组内容还可以轻松地与其他用户共享angular色。 但是,这些和它们不同的用例之间的区别对于我来说并不明显。 例如,如果我将/etc/ansible/hosts文件configuration成如下所示: [databases] mydb01.example.org mydb02.example.org [mail_servers] mymail01.example.org mymail_dr.example.org …那么这个“ [databases] ”条目是什么? 或者某个地方的剧本的YAML文件的名称? 或者是其他东西?!? 如果有人能向我解释这些差异,我对Ansible的理解就会大大提升! Playbook vs Role vs [databases]和/etc/ansible/hosts类似条目 如果Playbooks是在YAML文件中定义的,那么angular色定义在哪里? 除了Ansible服务器上的ansible.cfg外,如何使用可用的Playbooks / Roles添加/configurationAnsible? 例如,当我运行ansible-playbook someplaybook.yaml , ansible-playbook someplaybook.yaml如何知道在哪里可以find剧本呢?
我正在devise一个具有个人任务的剧本库 所以在通常的angular色回购,我有这样的东西: roles ├── common │ └── tasks │ ├── A.yml │ ├── B.yml │ ├── C.yml │ ├── D.yml │ ├── login.yml │ ├── logout.yml │ └── save.yml ├── custom_stuff_workflow │ └── tasks │ └── main.yml └── other_stuff_workflow └── tasks └── main.yml 我在custom_stuff_workflow中的main.yml包含如下内容: — – include: login.yml – include: A.yml – include: C.yml – […]
我正在使用ec2模块与ansible-playbook我想设置一个variables的文件的内容。 以下是我目前正在做的事情。 Var与文件名 shell任务来cat该文件 使用cat的结果传递给ec2模块。 我的剧本的例子内容。 vars: amazon_linux_ami: "ami-fb8e9292" user_data_file: "base-ami-userdata.sh" tasks: – name: user_data_contents shell: cat {{ user_data_file }} register: user_data_action – name: launch ec2-instance local_action: … user_data: "{{ user_data_action.stdout }}" 我认为有一个更简单的方法来做到这一点,但我找不到它searchAnsible文档。
我可以通知另一个angular色的处理程序吗? 我该怎么做才能find它? 用例是,例如,我想configuration一些服务,然后重新启动它,如果改变。 不同的操作系统可能有不同的文件来编辑,甚至文件格式可以不同。 所以我想把它们放到不同的angular色中(因为文件格式可以不同,所以不能通过设置group_vars来完成)。 但重启服务的方式是一样的,使用service模块; 所以我想把这个处理程序变成commonangular色。 无论如何要做到这一点? 谢谢。