Articles of ansible

我应该在Mac OSX Mavericks上使用python pip或homebrew安装Ansible吗?

我最近转移到使用OSX来pipe理我的Linux机器,所以我很新的OSX上使用Linux程序。 我想用Ansible的Vagrant引导我的开发环境,所以我需要先安装它。 但是我发现了两种在OSX上安装Ansible的方法: 点: http : //devopsu.com/guides/ansible-mac-osx.html Homebrew: https : //github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb 我已经使用pip方法安装了Ansible,因为我首先遇到了这个指南。 这两种方法有什么优点和缺点? 我应该使用点或自制软件安装Ansible吗? 我发现易于安装会干扰自制软件: Warning: /usr/bin occurs before /usr/local/bin This means that system-provided programs will be used instead of those provided by Homebrew. The following tools exist at both paths: easy_install easy_install-2.7

Ansible根据条件改变默认值

是否可以根据某些条件(即另一个variables的值)更改angular色variables默认值? 细节 我有一个命令env和composer_opts两个相关的variables。 如果两者都保持默认( env = "prod"和composer_opts = "–no-dev" ),那么一切都可以。 如果我将env改为dev ,另一个的默认值会打断我的命令,所以我总是需要同时设置。 是否有可能通过设置一个自定义脚本的条件默认值/如果? 重要说明:我不希望根据env值始终设置composer_opts值。 我只想设置它,如果它尚未设置(即dynamic默认值)。 伪代码 我想这样做(下面的代码是无效的,只是伪代码来expression我的需要) — # defaults/main.yml env: prod composer_opts: when: "{{env}}" = 'prod' '–no-dev –optimize-autoloader –no-interaction' when: "{{env}}" = 'dev' ''

在angular色中定义的Ansible处理程序是否在整个剧本或angular色之后运行?

我正在运行Ansible 2.0,我可以运行这个,但是我也可以被欺骗,相信我的经验性testing并不是真实的,而且我也没有find任何文件告诉我处理程序何时应该运行。 如果处理者在任务结束时没有跑,这是我的难题。 我有一个有5个angular色的剧本,我想添加一个angular色到最后需要第四个angular色的处理完成,然后才能开始。 有没有办法运行Ansible依赖于一个处理程序正在完成(即完成一个angular色),然后再做别的事情或者我使用处理程序错误?

Ansible,Chef,Puppet或____:具有最强大的Windows支持和最小的init脚印

我们主要(但不是唯一)赢得服务器。 最好是,我们可以启动操作系统,做些什么或什么都不做,以使其准备好接收命令(我们知道我们可能需要创build一个带有代理或ssh服务器的基本映像)。 需要能够安装mongodb,基于Java的应用程序,iisconfiguration等 哪个工具最强大的Windows支持/社区,(如果位置)最轻的初始化脚印? 操作答案:Powershell DSC。 这不是完整的故事(它不是所有的厨师/傀儡/等),但它满足了很多的需求,伟大的工程,并在胜利8.1 / 2012-R2 / 10开箱即用。 我们对此非常满意。

如何使用Ansible从远程机器获取多个文件到本地

我想用Ansible将文件从远程目录复制到本地目录,但是获取模块允许我只复制一个文件。 我有许多服务器,我需要文件(每个服务器相同的目录),我现在不用Ansible如何做到这一点。 有任何想法吗?

在Cobbler安装后开始安装Playbook

我正在实施Cobbler和Ansible来完成我们的服务器部署,并有最后一个问题。 我的Ansible playbook很棒,我的Cobbler安装效果很好,但问题在于把它们绑在一起。 我为Cobbler写了一个安装后的触发器,它会根据所使用的Cobblerconfiguration文件启动我的Ansible操作手册,这个脚本在单独运行时效果很好。 问题是,为了这个工作,服务器需要先重新启动,但是Cobbler在第一次重新启动之前安装触发器。 在Cobbler中有一个“firstboot”触发器,但是我根本无法得到这个工作。 它只是从来没有触发,即使在第一次启动后。 如果我尝试在重启之前运行Ansible,服务器就会超时。 这是CentOS 6.5,Ansible 1.6和Cobbler 2.4 TLDR:如何让Cobbler“firstboot”触发器工作,或者如何在安装之后但在第一次重新启动之前成功运行Ansible Playbook。 有任何想法吗? 谢谢!

如何从服务器上不再使用的angular色清理东西?

假设我有一个主机,其中包括一个Web服务器,相关Ansibleangular色安装nginx ,在/etc/nginx执行一些必要的configuration,并在防火墙中打开端口80和443。 在某些时候,我希望那个特定的主机不再是一个Web服务器,因为我由于某种原因将其他服务移到了其他地方。 只需从库存中的[webservers]中删除服务器就会在服务器中留下垃圾。 理想情况下,我想卸载nginx ,删除/etc/nginx目录(和其他一些目录),并closures防火墙中的端口80和443。 在木偶,我可以做到这一点。 作为Web服务器的主机在其configuration中将具有类似这样的内容: class { 'nginx': ensure => present, } 而我所要做的就是用“缺席”取代“现在”。 如果nginx类写得很好,它将撤消它所做的更改。 (通常,pipe理员将“存在”replace为“不存在”,之后,当他确定所有受影响的主机都撤消了configuration时,他将从清单中删除该项目。) 更重要的是,我认为Puppet防火墙模块会自动删除在清单中找不到的防火墙规则; 所以我认为,对于防火墙,你甚至不需要做那个“缺席”的事情,防火墙也会自动closures。 我怎样才能用Ansible来实现这些?

Ansible用列表迭代一个字典

我有通过include_vars加载下面的variables: access: username-foo: – path: / permissions: rwX recursive: true username-bar: – path: / permissions: rX – path: /css permissions: rwX recursive: true – path: /data permissions: rX – path: /data/reviews.yml permissions: rw – path: /js permissions: rX – path: /js/*.js permissions: rw 我想将这些信息提供给shell命令来设置适当的权限。 我已经尝试了一些从这里的技术: http : //docs.ansible.com/playbooks_loops.html但没有拿出工作的解决scheme。 是否有可能迭代这个结构? 如果没有,我如何重新构build它才能使其工作? 是否有可能做到这一点,而不打破DRY规则(例如,包括用户名到每个logging)?

Ansible:当有些文件不存在时,我可以使用vars_files吗?

这是部分: vars_files: – vars/vars.default.yml – vars/vars.yml 如果一个文件vars/vars.yml不存在 – 这是一个错误。 ERROR: file could not read: /…/vars/vars.yml 如何才能从这个文件加载额外的variables,只要它存在? (没有错误)

如何使用Ansible从uri请求中检查JSON响应?

我有一个Ansible任务,向网站发出URI请求以获得JSON响应。 如果嵌套的JSONvariables是定义的,我希望Ansible做一些事情,如果不是的话,也要做其他事情。 – name: Get JSON from the Interwebs uri: url="http://whatever.com/jsonresponse" return_content=yes register: json_response – name: Write nested JSON variable to disk copy: content={{json_response.json.nested1.nested2}} dest="/tmp/foo.txt" 请注意,使用ignore_errors仅适用于任务命令失败,不适用于检查Jinja模板中嵌套数据结构中的未定义值。 所以如果没有定义json_response.json.nested1.nested2 ,尽pipe设置了ignore_errors=yes ,这个任务仍然会失败。 如果请求失败,或者如果请求没有定义正确的嵌套值,如何获得此/tmp/foo.txt在/tmp/foo.txt存储一些默认值?