Questions tagged «ansible»

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

5
Ansible:如何逐台运行一个任务主机?
在播放级别上,我们必须serial: 1允许我们一次在一个主机上运行整个播放。但是我还没有找到在单个任务上执行此操作的简单方法。如果有问题的任务没有执行正确的锁定(无论出于何种原因),则这一点尤其重要。 一个明显的答案是将任务放在自己的角色上。但这对角色没有帮助。(serial: 1使用角色扮演角色并不是很直观。)
15 ansible 

3
如何避免显示跳过的Ansible任务?
我的剧本的输出总是被无用的输出完全淹没,因为这些输出都跳过了哪些任务,这使得查找我正在寻找的特定信息变得烦人且耗时。 这是一本剧本的例子 - name: Stopping Puppet Agent service: name=pe-puppet state=stopped ignore_errors: true register: result - include: rollback/restart-pe-puppet.yml when: result|failed 和相关的输出: TASK: [name | Stopping Puppet Agent] ************************************** <server.name> REMOTE_MODULE service name=pe-puppet state=stopped changed: [server.name] => {"changed": true, "name": "pe-puppet", "state":"stopped"} TASK: [name | judge_log msg='Restarting pe-puppet'] *********************** skipping: [server.name] TASK: …
14 ansible 

3
如果密钥被拒绝,如何制作Ansible使用密码?
我的新服务器实例配置为使用密码通过ssh在root用户上登录。我希望Ansible剧本将其重新配置为使用密钥,并在首次运行时禁用使用密码的root登录,所以我需要这样的东西: 尝试用钥匙登录 如果无法使用密钥登录: 用密码登录 将密钥添加到authorized_keys 禁用使用密码的root登录 可选地使用钥匙重新连接 做其他任务 我该怎么做? 编辑:明确地说,我不是在问如何添加密钥或禁用root,这只是为了上下文。我在问如果无法使用密钥进行身份验证如何回退到密码。使用--ask-pass或ansible_ssh_pass设置,Ansible甚至不会尝试使用公共密钥身份验证

2
角色中定义的Ansible处理程序是否在整个剧本或角色之后执行?
我正在运行Ansible 2.0,我可以运行它,但是我也可能被欺骗,以至于我的经验测试认为这是不正确的,并且找不到任何文档可以告诉我何时应该运行处理程序。 如果处理程序没有在任务结束时运行,这就是我的难题。我有一个包含5个角色的剧本,我想在末尾添加6个角色,该角色需要先完成第4个角色的处理程序才能开始。 有什么方法可以运行Ansible来依靠完成的处理程序(即角色完全完成)再执行其他操作,或者我使用的处理程序错误吗?
13 ansible 

2
如何使用fileglob模式进行嵌套循环?
我正在尝试为Ansible中的一组用户创建一组授权的SSH密钥。我有一个users像这样设置的变量: users: - { username: root, name: 'root' } - { username: user, name: 'User' } 在同一角色中,我在files/public_keys目录中还有一组授权密钥文件,每个授权密钥一个文件: roles/common/files/public_keys/home roles/common/files/public_keys/work 我想将每个公钥复制到每个用户。 我尝试使用以下任务: - name: copy authorized keys authorized_key: user={{ item.0.username }} key={{ item.1 }} with_nested: - users - lookup('fileglob', 'public_keys/*') 但是,item.1包含文字字符串"lookup('fileglob', 'public_keys/*')",而不是下的每个文件路径files/public_keys。 有没有一种方法可以获取files/public_keys目录列表并将每个公钥复制到每个用户?
13 ansible 

3
调试时退出Ansible剧本的最简单方法
假设我正在调试Ansible剧本,并希望在完成给定任务后退出(而不是通过以下所有任务运行)。是否有可用的单行魔术命令,还是我必须手动创建退出/声明任务? 从ansible-playbook手册中,我看到有一个--start-at-task=START_AT标记,但是看不到任何类似“ end-at” 的标记。
13 ansible 

5
许多服务器的SSH访问网关
通过Ansible管理3台设备,目前管理着90多台服务器。一切工作正常,但是现在存在一个巨大的安全问题。每个开发人员都使用自己的本地ssh密钥来直接访问服务器。每个开发人员都使用一台笔记本电脑,并且每台笔记本电脑都可能受到威胁,从而使整个产品服务器网络容易受到攻击。 我正在寻找一种集中管理访问权限的解决方案,从而阻止任何给定密钥的访问。与将密钥添加到bitbucket或github的方式没什么不同。 我想尽办法,假设解决方案是从一台机器(网关)到所需产品服务器的隧道...在通过网关的同时,请求将获取一个新密钥并用于获取对产品的访问权限服务器。结果是,只要拒绝访问网关,我们就可以在几秒钟内快速有效地杀死任何开发人员。 这是好的逻辑吗?有没有人看到解决这个问题的解决方案?

1
如何在Ansible中为变量分配空值?
如果firewall_allowed_ports在: - name: port {{ item }} allowed in firewall ufw: rule: allow port: "{{ item }}" proto: tcp with_items: - 22 - "{{ firewall_allowed_ports }}" 未定义,则发生此错误: fatal: [host.example.com]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. …
12 ansible 

1
为什么Ansible通知不起作用?
我正在学习ansible并编写了简单的剧本,但我不理解或我做错了那个处理程序不起作用!请帮我。 我的剧本: - hosts: HA gather_facts: False tasks: - name: Installs pacemaker yum: pkg=pacemaker,pcs,resource-agents state=latest notify: - pcsd start handlers: - name: pcsd start systemd: name=pcsd state=started 他跳过了通知: PLAY [HA] ********************************************************************** TASK [Installs pacemaker] ****************************************************** ok: [test-ha2] ok: [test-ha1] PLAY RECAP ********************************************************************* test-ha1 : ok=1 changed=0 unreachable=0 failed=0 test-ha2 : …

1
如何在ansible中打印主机的当前主机名
我写了一个角色,用于在用户登录计算机时编辑motd,但是我想个性化motd以打印计算机的主机名 我使用什么变量?或我该怎么做?模板?怎么样?我copy module将motd文件用于 因此,例如,我希望能够说“欢迎使用$ hostname”,那么如何使用ansible解析此主机名?


1
在Jinja2模板中循环Ansible变量数组
当Ansible收集有关主机的事实时,例如获取主机的所有坐骑: "ansible_mounts": [ { "block_available": 7800291, "block_size": 4096, "block_total": 8225358, "block_used": 425067, "device": "/dev/mapper/foobar", "fstype": "xfs", "inode_available": 16403366, "inode_total": 16458752, "inode_used": 55386, "mount": "/", "options": "rw,seclabel,relatime,attr2,inode64,noquota", "size_available": 31949991936, "size_total": 33691066368, "uuid": "2ebc82cb-5bc2-4db9-9914-33d65ba350b8" }, { "block_available": 44648, "block_size": 4096, "block_total": 127145, "block_used": 82497, "device": "/dev/sda1", "fstype": "xfs", "inode_available": 255595, "inode_total": 256000, …
12 ansible  json  jinja 

1
对于可容纳约100位主机的简单Ansible剧本,合理的性能是什么?
我们开始考虑用Ansible替换旧的cfengine2安装。我有一本简单的剧本: 复制一个sudoers文件 复制模板化的resolv.conf(由group_vars和host_vars数据提供) 检查几个服务是否正在运行 检查本地用户的存在 该剧本需要4分钟的挂钟时间才能在97台计算机上运行(所有设备都通过1gig或10gig快速网络连接,LAN延迟不到1ms),并且在使用2核4G内存VM时消耗了50%以上的CPU运行它。 在单台计算机上运行大约需要11秒钟,而用户+系统的CPU时间消耗了大约4秒钟,对于所涉及的工作量来说,TBH似乎仍然有些多余。 明显的位: 我在playbook-dir本地ansible.cfg中显式启用了管道 我实际上已启用对jsonfile的缓存,相同的本地ansible.cfg 我将叉子设置为50,相同(我尝试了其他值) 我确定Ansible使用的是SSH,而不是Paramiko,并且使用的是持久控制套接字-我可以看到SSH进程正在启动并在运行过程中持久存在。 这种性能水平正常吗?或者我的设置有问题吗?如果可以,我该如何确定呢? 编辑:截至2017年8月,我们仍然看到此问题。Ansible版本为2.2.1,并且剧本的大小现已增加。最新数字: 98位房东 ansible -m ping all 实际需要4.6秒,用户需要3.2秒,系统时间为2.5秒 完整的剧本运行需要4分钟,同时使用100%的用户和约35%的系统CPU(在2核VM部署服务器上,其中100%是一个完整的CPU) 目标操作系统主要是CentOS 7,有些是CentOS 6 分析没有显示任何特定的任务热点AFAICT 尽管剧本现在更大了,但我仍然认为其中没有任何东西可以证明剧本服务器上的CPU负载水平是合理的-也许是整点时钟时间,但是对于大多数运行情况,部署服务器应该在很大程度上处于空闲状态,据我所知,主要是文件副本和一些模板扩展。 请注意,我们正在大量使用host / groupvars 有人问到了性能分析,以及性能分析的尾声: Tuesday 01 August 2017 16:02:24 +0100 (0:00:00.539) 0:06:22.991 ******** =============================================================================== yumrepo : centos repos -------------------------------------------------- 9.77s sshd : copy CentOS …

3
Ansible,Chef,Puppet或____:具有最强的Windows支持和最小的初始化占用空间
我们主要(但不是排他性地)赢服务器。 最好是,我们可以启动操作系统,而几乎不执行任何操作或不执行任何操作以使其准备好接收命令(我们知道我们可能需要在其上创建具有代理或ssh服务器的基础映像)。 需要能够安装mongodb,基于Java的应用程序,iis config等。 哪个工具具有最强的Windows支持/社区功能,以及(如果可能)最轻的初始化占用空间? 操作答案:Powershell DSC。 这不是完整的故事(它不能完成厨师/人偶/等等的全部工作),但是它可以满足很多需求,效果很好,并且在win 8.1 / 2012-R2 / 10中是开箱即用的。我们对此感到非常高兴。

2
安装补鞋匠后启动Ansible Playbook
我正在实施Cobbler和Ansible来完成我们的服务器部署,最后有一个问题。我的Ansible剧本效果很好,我的Cobbler安装效果很好,但是问题在于将它们绑在一起。 我为Cobbler编写了一个安装后触发器,该触发器将根据所使用的Cobbler配置文件启动我的Ansible剧本,该脚本单独运行时效果很好。问题在于,要使此方法起作用,首先需要重新引导服务器,但是Cobbler会在第一次重新引导之前执行安装后触发器。Cobbler中有一个“ firstboot”触发器,但我根本无法使它正常工作。即使在第一次启动后,它也永远不会触发。 如果我尝试在重新启动之前运行Ansible,则服务器超时。 这适用于CentOS 6.5,Ansible 1.6和Cobbler 2.4 TLDR:如何使Cobbler“ firstboot”触发器起作用,或者如何在安装后但首次重启之前成功运行Ansible Playbook。 有任何想法吗? 谢谢!

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.