Articles of ansible

使用嵌套的conditinal块insible

我正试图在一个条件块中插入一个条件块: – block: – postgresql_db: name={{ dbname }} state=absent – postgresql_db: name={{ dbname }} … – block: – get_url: url={{ remote_database_dump }} dest={{ local_database_dump }} – command: pg_restore -d {{ dbname }} {{ local_database_dump }} when remote_database_dump != "" become: true become_user: postgres become_method: su when: db_recreate == "true" 但是我得到一个ERROR! Syntax Error while loading YAML. […]

在任何条件下运行特定angular色

我创build了一个名为cleanup的angular色,这是我在playbook中的最终angular色(在运行所有其他angular色后处理一些清理) 这里是我的剧本的简化版本 – hosts: myhost roles: – common – postgresql – rabbitmq – web – cleanup 问题是如果剧本无法正常运行,那么我怎么能把这个特定的angular色标记为重要的,那么即使剧本中的所有其他angular色都失败了,

Ansible group_varsvariables优先级(group_vars覆盖其他group_vars)

在Ansible 2.2上, 我有一个Ansible主机文件: [webserver] aegir.dev [hostmaster] aegir.dev 我有两个group_vars/文件: # group_vars/webserver.yml my_var: – vagrant 和 # group_vars/hostmaster.yml my_var: – vagrant – aegir 和剧本: – hosts: webserver tasks: – debug: var=my_var – hosts: hostmaster tasks: – debug: var=my_var 输出: PLAY [webserver] *************************************************************** TASK [setup] ******************************************************************* ok: [aegir.dev] TASK [debug] ******************************************************************* ok: [aegir.dev] => { "my_var": [ "vagrant", […]

处理Ansibleangular色间依赖关系的最佳实践

我目前正在采取合理的第一步,所以这可能是一个基本的问题。 我正在尝试configuration一个服务器,该服务器托pipe了几个网页,并公开了一些其他服务。 对于每个这些,我可以select希望能够 用名称服务器注册一个子域名是其中一项服务 使用Let's Encrypt为服务颁发证书 在我的防火墙中打开sme端口 我目前也有angular色来设置名称服务器,让我们encryption,和防火墙。 什么是angular色之间沟通的最佳实践? 例如,Web服务器angular色是否知道如何为自己创build证书的确切命令,或者是否有将抽象方法抽象为通知调用的方法? 每个服务angular色应该能够写入我的防火墙configuration文件,还是应该以某种方式成为防火墙angular色的特权? 也许我在程序员的心态上太多了,但是我喜欢像“分离关注”这样的东西,我希望能够改变我的防火墙软件,而不必改变其他任何angular色。

有没有一个zcat等同于ansible?

有没有一个更好的方式来做zcat ,而不是调用shell ? – name: "Unpack the local config" shell: "zcat /proc/config.gz > /usr/src/linux/.config" args: creates: "/usr/src/linux/.config"

ssh-keys可以通过堡垒

我有一些testing服务器在Openstack的堡垒后面运行。 testing堆栈经常被删除和创build。 创build堆栈后,我运行一组Ansible脚本来安装和configuration服务器。 我有几乎完全自动化的过程,但我似乎无法让远程主机在堡垒主机后面ssh-keyscan工作。 这是我在我的~/.ssh/config Host bastion HostName 1.2.3.4 User myuser IdentityFile ~/.ssh/private_key.pem Host remote-host1 HostName 192.168.0.123 User myuser IdentityFile ~/.ssh/private_key.pem ProxyCommand ssh -W %h:%p bastion 如果我尝试运行ssh-keyscan remote-host1我得到 getaddrinfo remote-host1: Name or service not known 运行ssh remote-host1但会提示 The authenticity of host '192.168.0.123 (<no hostip for proxy command>)' can't be established. ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. […]

如何设置每个主机ansible的gather_subset?

我们可以在play level使用gather_subset 。 是否有可能在每个主机级别上使用它? 就像把它放在一个host_vars文件? 我对2.2.1.0的快速testing没有解决。 我的问题在手边:我有一个主机,get_cpu_facts失败。 实际上,我从来不需要这个主机的硬件资料,所以我想把"!hardware"放在它的gather_subset 。

使用nslookup从ansible playbook中检测networking

我正在为我的团队开发一个Vagrant + Ansibleconfiguration,这个configuration设置了一个开发者虚拟机,所需的一些工件只能从我的公司networking上获得,无论是通过物理上的还是通过VPN连接的。 如果我们在不在公司networking上的计算机上进行configuration,我想自动连接到我们的vpn(使用openconnect客户端),复制文件,然后从Ansible断开连接。 在过去,我使用类似于bash脚本的方式检测networking: if nslookup hostname | grep 'can't find'; then … if nslookup hostname | grep 'can't find'; then … 我的问题是有一个干净的方式来做一个Ansible“当”声明或类似的东西这样的检查。 FWIW:对于Ansible来说我是相当新的,所以如果这是在他们的文档中,我只是想念它,请随时指向我,并相应地鞭打我。

Ansible Playbook与基于库存的任务

是否可以使用库存文件(或dynamic库存)的内容来创build任务? 例如,假设我想dynamic地configuration监控服务器,以远程监控库存configuration的Web服务器中的N个网站,并根据库存的内容自动将新条目添加到其configuration中。 我非常乐意接受这个错误。 我知道,我希望有一个主机知识的来源,尽我所能,这是很好的。

我可以直接注册一个命令的输出作为一个布尔值吗?

我有一些代码检查存在的东西。 如果它有2行,这意味着post存在。 我可以在第一个任务中立即将检查variables注册为布尔值,而不是需要在第二个任务中投入? 我目前的解决scheme – name: Check if home page has been created sudo_user: www-data shell: wp post list –post_type=page –post_title=Home –post_status=publish chdir={{wordpress_path}} register: is_homepage_created – name: Booleanize homepage check set_fact: is_homepage_created={{is_homepage_created.stdout_lines|length >= 2}}