我试图运行一个特定的Ansible任务作为一个不同的用户比正在运行的剧本。 我的.yml文件看起来像这样: — – hosts: staging_servers tasks: – name: check user remote_user: someusername shell: whoami 运行这个任务表明, whoami命令返回的是不同于我在任务中定义的用户(具体来说,返回在hosts文件ubuntu定义的用户)。 我也试图定义这样的任务: — – hosts: staging_servers tasks: – name: check user sudo: yes sudo_user: someusername shell: whoami 但是然后我得到' Missing sudo password '错误,虽然sudoers文件中有一行表示someusername ALL=(ALL) NOPASSWD:ALL并在远程机器上用sudo发出命令,因为someusername不要求我input密码。 那么,我如何才能以不同的用户身份运行特定的任务,而不是在hosts文件或root定义的用户呢?
全新的可靠 – 我试图将src目录中的一堆文件符号链接到一个目的地。目前: file: src: /drupal/drush/{{ item.path }}.aliases.drushrc.php dest: /home/vagrant/.drush/{{ item.dest }}.aliases.drushrc.php with_items: – { path: 'new', dest: 'new' } – { path: 'vmdev', dest: 'vmdev' } state: link 我得到的错误: fatal: [vmdev] => One or more undefined variables: 'item' is undefined 有人可以指出我正确的方向..? 干杯
searchAnsible创buildtar不会产生任何好结果,而有一个unarchive模块,没有归档模块。 我可能会用命令模块来解决这个问题,但是在Ansible中是新的,这让我觉得如果我做错了。 我很确定我不是第一个需要将源代码定制到生产服务器的源代码。 那为什么没有档案模块,社区如何处理这个用例?
我有一个PGBouncer Ansible播放 ,显示内置于PGBouncer的统计模块的一些输出。 我的问题是,当Ansible将输出打印到terminal时,会损坏换行符。 而不是看到 ———- | OUTPUT | ———- 我懂了 ———-\n| OUTPUT |\n———- 有谁知道如何让Ansible“漂亮的打印”输出?
在Ansible 2.4中, include模块已被弃用。 在它的地方,它附带两个replace模块, import_tasks和include_tasks 。 但他们有非常相似的描述: include_tasks :包含一个文件,其中包含当前剧本中要执行的任务列表。 import_tasks :导入要添加到当前剧本中的任务列表以供后续执行。 什么时候应该使用前者,何时使用后者?
最干净的方法是什么? 尝试添加用户到用户模块的sudo组,但Ansible报告它找不到sudo组。
(与Ansibleangular色中的Callbacks或hooks以及可重用的一系列任务有关 ): 有没有更好的方法来追加到列表中,或者使用jina2模板expression式将关键字添加到Ansible的字典中(ab)? 我知道你可以做这样的事情: – name: this is a hack shell: echo "{% originalvar.append('x') %}New value of originalvar is {{originalvar}}" 但是真的没有这样的元任务或帮手吗? 它感觉脆弱,似乎没有logging,并依赖于关于variables如何在Ansible中工作的大量假设。 我的用例是多个angular色(数据库服务器扩展),每个angular色都需要为基本angular色(数据库服务器)提供一些configuration。 这不像在数据库服务器configuration文件中添加一行那么简单; 每个更改都适用于同一行 ,例如,扩展pg_stat_statements和pg_stat_statements必须出现在目标行上: shared_preload_libaries = 'bdr, pg_stat_statements' 是Ansible的方式做到这一点,只是处理configuration文件多次(每扩展一次)与正则expression式提取当前值,parsing它,然后重写它? 如果是这样的话,你如何在多次运行中使这个幂等性? 如果configuration比parsing更难,而且不像追加另一个逗号分隔值那么简单? 想想XMLconfiguration文件。
什么是从一个点来pipe理iptables的最好方法,并且能够在本地服务器上编辑某些东西。 我们需要添加一些集中在所有服务器上的规则,但是我们有特定的服务器,这些服务器应该有自己的一套规则。 我想到了与多个包括集中pipe理和包括在本地服务器上pipe理的包括bash脚本。 这是好的方法吗? 或者也许有更好的? 我们不能创buildyml2模板,因为特定主机之间的差别太大了。 请提供集中pipe理iptables的例子。
这是基于这个骗局问题 。 所描述的问题是有一个bash脚本包含的东西的影响: rm -rf {pattern1}/{pattern2} …如果两个模式都包含一个或多个空元素,则将扩展到rm -rf /至less一个实例,假定原始命令正确转录,并且OP正在进行扩展而不是参数扩展 。 他在OP 对这个恶作剧的解释中说: 这个命令是无害的,但似乎几乎没有人注意到。 Ansible工具防止这些错误,但似乎没有人知道,否则他们会知道我所描述的事情是不可能发生的。 所以假设你有一个通过扩展或参数扩展发出rm -rf /命令的shell脚本,使用Ansible将阻止这个命令被执行是真的,如果是的话,它是如何做的? 只要你使用Ansible来执行rm -rf / root权限真的是“无害”的呢?
我正在使用Ansible,并且在我的清单/ all中有这个configuration: [master] 192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant [slave] 192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant 192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant [app] 192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant [all:children] master slave 我不想重复每个新实例的所有参数。 我怎样才能在一个地方configuration他们? 有没有这些参数的文件?