Articles of ansible

引用冒号

我正在尝试使用ansible来检查特定程序的输出是否设置为某个值。 该值包括一个冒号,后面跟一个空格,这似乎注册为一个语法错误,不pipe我怎么引用它。 例: — – hosts: all tasks: – raw: echo "something: else" register: progOutput – debug: msg: "something else happened!" when: progOutput.stdout_lines[-1] != "something: else" 当我运行这个时,我得到了第一个“原始”命令的错误: ERROR! Syntax Error while loading YAML. The error appears to have been in '<snip>/test.yml': line 4, column 27, but may be elsewhere in the file depending on the […]

在Ansible中创build非root用户并禁用根SSH

我试图编写一个Ansible手册来引导我的服务器。 默认情况下,我只能使用root用户名和密码login,所以我的playbook以root身份login,使用SSH密钥创build非root用户,并禁用root和SSH密码。 这是一个问题,因为我现在不能再次运行该剧本,因为根login被禁用! 我希望剧本是幂等的,不必在引导它们之后添加和删除主机。

在远程主机上运行Ansible ping失败,出现未知的SSH错误

我试图做一个Ansible ping ansible ansible all -m ping –ask-pass但是我得到SSH失败。 由于debugging日志是相当广泛的,我已经把下面的报价减less到了我认为问题发生的地方。 在日志之前,我可以连接到远程主机(一个无头RHEL5虚拟机),但实际执行“ping”时,会失败,出现下面的错误。 debug1: Entering interactive session. debug2: set_control_persist_exit_time: schedule exit in 60 seconds debug1: multiplexing control connection debug2: fd 4 setting O_NONBLOCK debug3: fd 5 is O_NONBLOCK debug3: fd 5 is O_NONBLOCK debug1: channel 1: new [mux-control] debug3: channel_post_mux_listener: new mux channel 1 fd 5 debug3: mux_master_read_cb: […]

调整Ansible输出

我想使用Ansible从许多服务器收集信息。 信息应该在本地进行后处理,所以应该以一定的格式显示。 除了grep和sed和awk以及其他系统pipe理员的最好的朋友,我怎么从Ansible那里得到与任务相关的东西,而没有其他东西? 必须有一种方法来从Python运行Ansible,将variables导出到包装脚本,或者从Ansible运行Python来自定义输出。

避免在Ansibleangular色中重复“with_items”

我有一个Ansibleangular色,有几个虚拟主机运行的任务。 我的剧本的作品,它看起来像这样: — – name: Create vhost configuration # action with_items: vhosts – name: Ensure vhost is enabled # action notify: restart apache2 with_items: vhosts # (Many more actions) 有没有办法避免为每个动作写with_items ? 我是否可以遍历整个剧本的虚拟主机项目,而不是按顺序为所有虚拟主机运行每个命令? (因为我与上面的代码)

与ssh和Ansible有关的问题

当运行一个不可靠的任务(通过一个script动作),我得到这个错误消息: stderr: OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: auto-mux: Trying existing master debug1: mux_client_request_session: master session id: 2 Shared connection to 10.0.2.222 closed. 现在,在这之前有一大堆针对同一台主机的任务,而且都工作正常。我知道这是客户端,因为客户端是Debian; 正在提供的东西是Centos。 当我试图查找这个错误信息时,我发现(对于我的懊恼),我得到的通常是一些其他问题的更长的消息的第一部分。 我尝试添加 Host 10.0.2.222 ControlMaster no 到我的/etc/ssh/ssh_config的开头,因为这个问题出于纯粹的绝望,但它没有工作,我真的不知道可能出了什么问题; 我不知道SSH是如何工作的,甚至不知道最可能的罪魁祸首是什么。

如何枚举Ansible中的networking接口

我想使用Ansible在一台机器上得到networking接口的有序列表。 现代Linux系统不使用eth0,eth1等,所以名称是不可预知的。 在我们的networking中,我们将编号最小的接口连接到局域网,最高的接口连接到广域网,因此我可以使用有序列表中的接口位置来确定它的function。 我正在寻找在Ansible中执行此操作的规范方法。 所以我可以使用{{ansible_eth0.ipv4.address}}之类的东西。 (其中eth0是其他名称)。 即使我手动设置一个variables与接口的名称似乎没有办法获得该接口的IP(使用variables的内容)。 我想处理Ansible的事实,以获得我想要的,而不是在远程系统上运行一个shell脚本。

将组合在一个合理的模板中

有没有人在一个合理的模板中组合了一个循环。 我们想要做的是获得两个组的共同成员,并循环它们来创build我们的configuration。 我们正在尝试在主机限制内工作的相同格式,但接收'dict object' has no attribute 'tag_function_psql:&tag_release_dev' {% for host in groups['tag_function_psql:&tag_release_dev'] %}

在Ansible中引用主机作为variables的正确方法是什么?

对于Ansible来说,我是相当新的,对于这个特定脚本的stream程,我们处于一个两难的境地。 我们有一个我们想要部署到每个主机的证书列表; 这些是每个主机独特的,所以1:1传输。 # hostfile [prod] host_a host_b host_c 目前,我正在做这个作为我的angular色group_vars一部分: haproxy: prod: certs: host_a: a.my.endpoint.com.pem host_b: b.my.endpoint.com.pem host_c: c.my.endpoint.com.pem 然后在一个任务中引用这个: – name: upload haproxy server certificates copy: src: "{{haproxy[env].certs[inventory_hostname]}}" dest: "/etc/haproxy/ssl/{{haproxy[env].certs[inventory_hostname]}}" backup: yes notify: – restart haproxy tags: – haproxy 这工作正常,但我不喜欢它。 我主要不喜欢它,因为它迫使你记住在两个地方更新主机(hostfile和vars文件)。 我考虑的是将主机定义为group_vars中的group_vars ,但是我不完全相信我可以在文件中引用variables? 所以像这样: hosts: host_a host_b host_c haproxy: prod: certs: {{ hosts.host_a }}: […]

在Ansible中显式清空组

我有一个适用于各种库存的剧本。 有些剧目不适用于所有的存货。 我可以离开清单,或者我可以添加它,但保持空白。 在这两种情况下,运行可选播放时都会产生警告: [WARNING]: Could not match supplied host pattern, ignoring: myoptionalgroup 我仍然希望使用这一类的警告来产生一个报告,以便发现错误 – 例如,如果某个组名在游戏或库存中被错误input,但我不想让它出现在我知道这是故意的时候。 在某些情况下,我怎么能够最好的压制这种警告呢?我知道在一个特定的盘点中将不会有哪个主持人适用于哪一种戏剧?