Questions tagged «ansible»

Ansible是用于配置和管理计算机的开源软件平台。它结合了多节点软件部署,临时任务执行和配置管理。

3
始终在Ansible中触发处理程序执行
我正在使用Ansible设置我的开发服务器。 我希望它总是为我提供一些服务。我为此有处理程序,但是触发无条件执行处理程序的最佳方法是什么,例如使其始终有效? 像这样: tasks: - name: Trigger handler run_handler: name=nginx-restart
33 ansible 


8
SSH因身份验证失败而中止
我试图运行这个简单的供应脚本,但运行的时候,我遇到错误vagrant up,然后vagrant provision命令。 我读到我需要创建一个/etc/ansible/hosts已经完成的文件,并用以下文件填充: [vagrant] 192.168.222.111 我的SSH配置(已删除一些详细信息): Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/ashleyconnor/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL Host server HostName XXX.XXX.XXX.XXX User ash PreferredAuthentications publickey IdentityFile ~/.ssh/ash_ovh Host deployer HostName XXX.XXX.XXX.XXX User deployer PreferredAuthentications publickey IdentityFile ~/.ssh/deployer_ovh Host bitbucket.org PreferredAuthentications …


6
使用Ansible运行apt-get autoremove
我用ansible维护了很多EC2服务器。使用apt模块定期更新和升级服务器。 当我手动尝试升级服务器时,收到以下消息: $ sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: linux-headers-3.13.0-29 linux-headers-3.13.0-29-generic linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic linux-image-3.13.0-29-generic linux-image-3.13.0-32-generic Use 'apt-get autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to …
23 apt  ansible 

2
Will Ansible将阻止在Shell脚本中执行'rm -rf /'
这是基于这里的骗局问题。所描述的问题是具有一个bash脚本,其中包含以下内容: rm -rf {pattern1}/{pattern2} ...如果两个模式都包含一个或多个空元素,则将扩展到至少一个实例rm -rf /,假设原始命令已正确转录并且OP正在进行括号扩展而不是参数扩展。 在OP 对骗局的解释中,他指出: 该命令是无害的,但似乎几乎没有人注意到。 Ansible工具可以防止这些错误,但是似乎没人知道,否则他们将知道我所描述的事情不会发生。 因此,假设您有一个rm -rf /通过大括号扩展或参数扩展发出命令的shell脚本,那么使用Ansible是否会阻止该命令执行,这是真的吗?如果是的话,它将如何执行? rm -rf /只要您使用Ansible进行root特权执行,是否真的“无害”?
23 linux  bash  ansible  rm 

2
以特定用户身份运行Ansible任务
我正在尝试以与运行剧本的用户不同的用户身份运行特定的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并没有要求我输入密码。 因此,如何以其他用户(不是hosts文件或root他自己定义的用户)身份运行特定任务?

4
Ansible:是否可以在播放剧本时将“ cat文件”“ cat文件”并将其输出导出到屏幕,而不是作为调试?
我写了一部剧本,每个用户都可以安装和配置Google Authenticator。 我希望将剧本的最后一步转移cat到google_authenticator配置文件中。 使用“调试”模块,我可以将数据显示在屏幕上,但只能作为调试消息: TASK: [debug var=details.stdout_lines] **************************************** ok: [localhost] => { "details.stdout_lines": [ "ZKMFTE2ADYA2OYCH", "\"RATE_LIMIT 3 30", "\" DISALLOW_REUSE", "\" TOTP_AUTH", "12920994", "88224784", "69464205", "38144121", "45634120" ] } 我在网上阅读了可以做的事情: - name: Print to screen google authenticator details command: /bin/cat {{ google_authenticator_secret_file_location }} register: details tags: google_2fa_user - debug: msg="{{ …

6
使用Ansible安装rpm软件包
如何使用Ansible在远程计算机上安装.rpm软件包? 显而易见的解决方案是使用command模块,但这有点愚蠢。我也想避免只为一个软件包设置一个yum存储库。 有没有更实用的方法来解决这个问题?
22 rpm  ansible 

2
配置管理:基于推与拉的拓扑
更加成熟的配置管理(CM)系统(例如Puppet和Chef)使用基于拉的方法:客户端定期轮询集中式主服务器以获取更新。他们中的一些人也提供了一种无主的方法(因此,基于推送),但指出它不是“用于生产”(Saltstack)或“可伸缩性较差”(Puppet)。我从一开始就知道的唯一基于推送的系统是亚军Ansible。 基于拉式系统的特定可伸缩性优势是什么?为什么增加更多的pull-master比push-agent更容易? 例如,agiletesting.blogspot.nl写道: 在“拉”系统中,客户端彼此独立地联系服务器,因此与“推”系统相比,整个系统可扩展性更高 另一方面,Rackspace展示了他们可以使用基于推送的模型处理15K系统。 infastructures.org写道: 我们发誓使用诸如SUP,CVSup,rsync服务器或cfengine之类的工具来维护基础结构的拉方法。而不是将更改推送给客户端,每个单独的客户端计算机都需要负责在启动时轮询金牌服务器,然后在以后定期维护自己的转速级别。在采用这种观点之前,我们基于ssh,rsh,rcp和rdist开发了广泛的基于推式的脚本。我们发现使用r命令(或ssh)的问题是:当运行基于r命令的脚本将更改推送到目标计算机时,很奇怪的是,如果您拥有30台以上的目标主机,则其中的一台将在任何给定时间出现故障。维护调试机器列表成为噩梦。在编写代码以对此进行更正的过程中,您将最终得到详尽的包装器代码来处理:死主机超时;记录并重试已死的主机;分叉并运行并行作业,以尝试在合理的时间内击中许多主机;最后,检测并防止用尽所有出站rsh会话的源计算机上的所有可用TCP套接字的情况。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。分叉并运行并行作业,以尝试在合理的时间内击中许多主机;最后,检测并防止用尽所有出站rsh会话的源计算机上的所有可用TCP套接字的情况。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。分叉并运行并行作业,以尝试在合理的时间内击中许多主机;最后,检测并防止用尽所有出站rsh会话的源计算机上的所有可用TCP套接字的情况。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。最后,检测并防止用尽所有出站rsh会话的源计算机上的所有可用TCP套接字的情况。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。最后,检测并防止用尽所有出站rsh会话的源计算机上的所有可用TCP套接字的情况。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。然后,您仍然有一个问题,就是要为将来要安装的所有新主机将自己所做的任何事情放入安装映像中,并对要死掉而明天必须重建的任何主机重复执行此操作。在经历了实现基于r命令的复制的麻烦之后,我们发现这是不值得的。我们不打算再次使用r命令或任何其他推送机制来管理基础结构。它们不像基于拉的方法那样可扩展。或与此相关的任何其他推送机制。它们不像基于拉的方法那样可扩展。或与此相关的任何其他推送机制。它们不像基于拉的方法那样可扩展。 这不是实现问题,而是架构问题吗?为什么编写一个线程化的推送客户端比一个线程化的推送服务器更难?

7
如何阻止ansible将密码写入日志文件?
我正在设置一个MySQL服务器,并希望Ansible mysql-root在安装过程中设置密码。 借助互联网,我提出了以下解决方案: - name: Set MySQL root password before installing debconf: name='mysql-server' question='mysql-server/root_password' value='{{mysql_root_pwd | quote}}' vtype='password' - name: Confirm MySQL root password before installing debconf: name='mysql-server' question='mysql-server/root_password_again' value='{{mysql_root_pwd | quote}}' vtype='password' - name: Install Mysql apt: pkg=mysql-server state=latest mysql_root_pwd是从Ansible Vault加载的变量。运行正常,但是现在服务器上的日志中有很多行: Apr 10 14:39:59 servername ansible-debconf: Invoked with value=THEPASSWORD …
22 security  ansible 

4
在庞大的环境中实现iptables管理
从一开始管理iptables并能够在本地服务器上进行编辑的最佳方法是什么。 我们需要在所有服务器上集中添加一些规则,但是我们有具有特定要求的特定服务器,这些服务器应具有自己的一组规则。 我想到了带有多个include的bash脚本,这些脚本通过ansible进行集中管理,并且包含在本地服务器上进行管理。这是好方法吗?也许还有更好的东西? 我们无法为ansible创建yml2模板,因为特定主机之间的差异太大。 请提供iptables集中管理的示例。
20 iptables  ansible 


3
在防火墙后面管理Linux计算机集群
我公司的产品实质上是一个Linux盒子(Ubuntu),它位于运行我们软件的其他人的网络中。到目前为止,我们只有不到25个盒子可以使用TeamViewer进行管理。 我们现在将要运送1000个这样的盒子,而TeamViewer不再是一个选择。我的工作是想出一种方法来访问这些框并更新它们上的软件。该解决方案应该能够穿透防火墙以及您所拥有的东西。 我考虑过: 1.自行开发的解决方案(例如Linux服务),该解决方案建立到云中服务器的SSH反向隧道,并在云中建立另一服务来跟踪这些服务器并允许您连接到它们。 这显然是劳动密集型的,并且坦率地说,感觉就像是重新发明轮子,因为很多其他公司肯定已经遇到了这个问题。即使这样,我不确定我们是否会做得很好。 2.木偶,厨师或OpenVPN等工具 我尝试阅读尽可能多的内容,但是我似乎无法充分理解市场营销方面的知识,以了解显而易见的选择。 除了我们之外,没有其他人需要连接到这些盒子。有没有相关经验的人可以给我一些指导?

6
Ansible:如果满足特定条件,则在vars文件中有条件地定义变量
根据在group_vars中定义的变量的值(真/假),我尝试在vars文件中定义一些变量。它们的值取决于var组的值。 我当前的var文件如下所示: {% if my_group_var %} test: var1: value var2: value ... varn: value {% else %} test: var1: other_value var2: other_value ... varn: other_value {% endif %} 对于我的每个角色,我都使用在此文件中定义的变量。 我的测试剧本如下所示: - name: blabla hosts: blabla vars_files: - <path>/test_vars.yml roles: blabla 运行剧本后收到的错误是: {% if my_group_var %} ^ here exception type: <class …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.