从Ansible v2.3开始,有一个wait_for模块的新参数: active_connection_states ,其默认值是: [u'ESTABLISHED', u'SYN_SENT', u'SYN_RECV', u'FIN_WAIT1', u'FIN_WAIT2', u'TIME_WAIT'] 现在想象一下,我只想等待连接状态: ['ESTABLISHED', 'SYN_SENT', 'SYN_RECV']以确保负载均衡连接在使用任何负载均衡器Ansible模块请求之后已经耗尽。 例: – wait_for: host: 0.0.0.0 port: 8080 state: drained active_connection_states: {{ connection_states_to_wait_for | default("[u'ESTABLISHED', u'SYN_SENT', u'SYN_RECV']") }} 错误:` ` 还尝试了default("[u'ESTABLISHED', u'SYN_SENT', u'SYN_RECV']") ,结果相同。 注意我试图改变模块的默认行为,但仍然使用一个variables来允许我的计划或执行等待一组不同的状态,会很好,但不是强制性的使用此;) 我应该如何使用这个新的参数? 我尝试了几种方法,但都没有工作,这就是我可以在模块文档中find的。
对于一个组名hello ,我使用以下条件在ansible中,它工作正常: when: "'hello' in group_names " 如果我想在以下group_names中匹配关键字hello ,有没有办法使用正则expression式: hello somewhere_hello hello123
有一个完美的angular色,它由许多任务组成。 因此,这些任务被拆分为单独的文件以实现更好的可追溯性。 文件夹angular色/ myrole / tasks /: step1.yml step2.yml … step10.yml main.yml 主要任务只包括包含的任务。 angular色/ myrole /任务/ main.yml: – include_tasks: step1.yml – include_tasks: step2.yml … – include_tasks: step10.yml site.yml – name: Deploy myrole hosts: rolehosts remote_user: roleuser roles: – myrole 部署期间,服务器必须重新启动几次。 现在每个任务文件都包含这样的任务: – name: Step 10 – reboot become: true shell: sleep 2 && shutdown -r […]
下面的代码会产生错误。 码: {% for v in hostvars.iteritems() %} {{ v['ansible_all_ipv4_addresses'][0] }} {{ v['ansible_hostname'] }} {% endfor %} 错误: {'msg': "One or more undefined variables: 'tuple object' has no attribute 'ansible_all_ipv4_addresses'", 'failed': True} 如果我想要一个/ etc / hosts文件,应该是这样的: 192.168.111.222 hostnameA 192.168.111.211 hostnameB … 谢谢!
我目前正在build立一个可靠的系统,并尽可能地自动化。 所以我在我的机器上创build了公钥并将它们复制到主机上,以便我可以从外部尽可能地控制主机。 现在我需要通过公钥设置我的主机之间的连接。 我正在使用lineinfile模块来确保这些密钥存在于authorized_keys和known_hosts文件中。 是否有一种方法来读取文件的内容(从机器运行的位置),并将其用作lineinfile模块的input?
如何在使用安全邮件模块时提供电子邮件帐户的用户名和密码。 我正在使用Gmail的SMTP服务器。 在邮件模块的文档中没有提到它。 我也遇到了一个问题 ,通过提交添加用户名和密码支持(也许我不知道它是如何工作的)。 但我找不到在主源代码中的smtp用户名和密码实现[https://github.com/ansible/ansible/blob/devel/library/notification/mail.](sorry..don't没有足够的代表发布3个链接)
问题与Ansible创build的文件 我正在使用在新的ISP上设置一些新的服务器,我一直在做一些基本的testing步骤。 我是新的,但已经在另一个ISP的差异服务器上做了一些testing,似乎没有问题(我创build的文件没有问题)。 两者都是Unbuntu 12,但原来的testing已经在一个服务器上,它的内核已经更新到3.8.0-44-通用和其他maint补充。 这个新的服务器也是Ubuntu 12,但是来自ISP模板,并且使用Kernel 3.5(Ubuntu 12.04.2 LTS(GNU / Linux 3.5.0-23-generic x86_64)) 我的第一个testing是创build新用户并上传他们已经存在的SSH密钥以供将来login。 用户创build没有问题,文件创build在创build过程中没有提供任何错误的迹象,但是当我尝试使用它们时。 我尝试login(新用户)_使用密钥,但系统的行为就好像SSH密钥文件不存在。 因为这是我第一个以root身份login的新用户,并以root身份进行了第一次查看和创build 作为根一切看起来不错。 .ssh目录中的文件“authorized_keys”存在并且似乎具有正确的权限,并且具有正确的内容。 但是试图通过SSHlogin就好像它不在那里一样。 我从rootlogin并以新用户身份重新login(使用密码,因为密钥未被识别)。 我做了一个“ls -al”,并且看到.ssh目录,但是通过“ls -al .ssh”查看目录中的“authorized_keys”文件给了我一个非常奇怪的结果。 'ls'为目录中的每个项目输出“Permission denied”错误消息,然后显示应该是命令结果的内容,但是文件名是可见的,其他所有内容(权限,文件大小,用户/组,date)是取而代之的是问号。 首先作为用户 – myusername myusername@my-server:~$ ls -al .ssh ls: cannot access .ssh/authorized_keys: Permission denied ls: cannot access .ssh/..: Permission denied ls: cannot access .ssh/.: Permission denied total 0 […]
我正在运行命令: [[email protected] ]# ansible example.com -a "sudo id" –ask-sudo-pass sudo password: example.com | FAILED >> { "failed": true, "msg": "[sudo] password for kamil: \r\n{\"changed\": true, \"end\": \"2015-02-05 12:06:16.612869\", \"stdout\": \"\", \"cmd\": [\"sudo\", \"id\"], \"start\": \"2015-02-05 12:01:16.533325\", \"delta\": \"0:05:00.079544\", \"stderr\": \"\", \"rc\": 1, \"warnings\": []}\r\nOpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: Applying options […]
我无法连接到Ansible中的主机。 这是错误的: 192.168.1.12 | UNREACHABLE! =“{”changed“:false,”msg“:”错误!SSH在连接过程中遇到一个未知错误,我们build议您使用-vvvv重新运行该命令,启用SSHdebugging输出来帮助诊断问题。 “unreachable”:true} 这是我的hosts文件: [test] 192.168.1.12 这是特别的指示: ansible all -m ping 我能够通过原始的ssh连接
我希望Ansible只能在特定的操作系统上运行,比如Ubuntu。 我试过了: become: ansible_os_family == 'Darwin' become: (ansible_os_family == 'Darwin') become: {{ ansible_os_family }} == 'Darwin' become: {{ ansible_os_family == 'Darwin' }} 这些工作都没有。 这甚至有可能吗? 我怎样才能做这个工作?