Questions tagged «ansible»

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

3
如何查看ansible命令的标准输出?
我如何看到ansible-playbook命令的stdout?-v仅显示ansible输出,而不显示单个命令。如果我能弄清楚如何立即执行此操作,那将很好,因此,如果出现故障或挂起,我可以知道原因。 例如 - name: print to stdout action: command echo "hello" 会打印 TASK: [print variable] ******************************************************** hello
165 ansible 

6
如何使用每台主机密码安全地实施ansible?
我想使用ansible管理一组现有服务器。我已经创建了一个ansible_hosts文件,并-K使用仅针对单个主机的命令进行了成功测试(使用该选项) ansible -i ansible_hosts host1 --sudo -K # + commands ... 我现在的问题是每个主机上的用户密码都不同,但是我无法在Ansible中找到处理此密码的方法。 使用-K,只会提示我预先输入一个sudo密码,然后似乎对所有后续主机都尝试了该密码,而不会提示: host1 | ... host2 | FAILED => Incorrect sudo password host3 | FAILED => Incorrect sudo password host4 | FAILED => Incorrect sudo password host5 | FAILED => Incorrect sudo password 到目前为止的研究: 一个StackOverflow问题,其中有一个错误的答案(“ use -K”)和一个作者说“发现我需要无密码的sudo”的响应 Ansible docs,其中说:“使用无密码sudo使事情更容易自动化,但这不是必需的。” …
108 security  sudo  ansible 

10
Ansible:仅在指定标签后才执行任务
Ansible标签只能用于运行任务/角色的子集。这意味着默认情况下将执行所有任务,并且我们只能阻止某些任务执行。 是否可以仅在指定了“ foo”标签的情况下将任务限制为可以执行?我们可以在when任务部分使用当前标签吗?
76 ansible 

5
如何在Ansible中统一软件包安装任务?
我从ansible开始,将使用它在其他Linux发行版中安装软件包。 我在文档中看到yum和apt命令是分开的-统一它们并使用如下所示的最简单方法是: - name: install the latest version of Apache unified_install: name=httpd state=latest 代替 - name: install the latest version of Apache on CentOS yum: name=httpd state=latest when: ansible_os_family == "RedHat" - name: install the latest version of Apache on Debian apt: pkg=httpd state=latest when: ansible_os_family == "Debian" 我知道这两个程序包管理器是不同的,但是它们仍然具有一组通用的基本用法。其他协调器(例如salt)只有一个安装命令。

2
include_tasks和import_tasks有什么区别?
在Ansible 2.4中,该include模块已弃用。它附带两个替换模块,import_tasks和include_tasks。但是它们有非常相似的描述: include_tasks:包括一个文件,其中包含要在当前剧本中执行的任务的列表。 import_tasks:导入要添加到当前剧本以供后续执行的任务列表。 我什么时候应该使用前者,什么时候应该使用后者?
62 ansible 

5
如何为SSH连接设置默认的Ansible用户名/密码?
我正在使用Ansible,并且在清单/全部中都具有以下配置: [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 我不想为每个新实例重复所有参数。如何在一个地方配置它们?是否有带有这些参数的文件?
59 ansible 


16
Ansible坚持收集事实
我的ansible盒子(无用)有一些奇怪的问题。 昨天一切正常,我的剧本还不错。 今天,ansible依赖于“收集事实”? 这是详细的输出: <5.xxx.xxx.xxx> ESTABLISH CONNECTION FOR USER: deploy <5.xxx.xxx.xxx> REMOTE_MODULE setup <5.xxx.xxx.xxx> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '- o', 'ControlPersist=60s', '-o', 'ControlPath=/home/vagrant/.ansible/cp/ansible-s sh-%h-%p-%r', '-o', 'Port=2221', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o ', 'PasswordAuthentication=no', '-o', 'User=deploy', '-o', 'ConnectTimeout=10', '5.xxx.xxx.xxx', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1411372677 .18-251130781588968 && chmod a+rx …
52 ssh  ansible 

4
Ansible:仅在目标文件不存在时复制模板
我正在Ansible 1.6.6配置我的机器。 我的剧本中有一个模板任务,可通过Jinja2模板创建目标文件: tasks: - template: src=somefile.j2 dest=/etc/somefile.conf somefile.conf如果它已经存在,我不想替换。Ansible有可能吗?如果是这样,怎么办?
47 ansible 

6
使用Ansible部署模板文件的文件夹
有没有一种简单的方法可以将充满模板.j2文件夹的文件夹部署到linux盒中,使用与模板相同的名称,但不带有.j2扩展名,而不是对每个文件使用模板模块? 现在我有很长的清单: - name: create x template template: src=files/x.conf.j2 dest=/tmp/x.conf owner=root group=root mode=0755 notify: - restart myService
47 linux  ansible 

1
如何使用Ansible访问其他主机的主机变量?
假设有一个主机收集了一些数据,并且它在一个组中[collectors]。我也有小组主持人[reporters]。因此,我想从groups['collectors'][0]IP地址为记者设置一个变量。但是,用于设置记者的剧本并未按[collectors]小组运行,因此未收集该主持人的事实。有没有一种方法可以不对IP地址进行硬编码?
45 ansible 

2
如何启用Ansible和Vagrant的其他调试输出?
我正在调查Ansible的服务器和应用程序配置。我的应用程序当前在Vagrant中配有shell脚本。我没有重写我的脚本,而是取了一个示例并尝试部署它。 它似乎可以很好地部署,但是在一系列成功的步骤之后,我看到了一条失败消息: » vagrant provision ~/vm/blvagrant 1 ↵ [default] Running provisioner: ansible... PLAY [web-servers] ************************************************************ GATHERING FACTS *************************************************************** ok: [192.168.9.149] TASK: [install python-software-properties] ************************************ ok: [192.168.9.149] => {"changed": false, "item": ""} TASK: [add nginx ppa if it ubuntu 10.04 and up] ******************************* ok: [192.168.9.149] => {"changed": false, "item": "", "repo": …

6
使用Ansible显示输出
我在PGBouncer的Ansible游戏中显示了PGBouncer内置的统计模块的一些输出。 我的问题是,当Ansible将输出打印到终端时,它将破坏换行符。而不是看到 ---------- | OUTPUT | ---------- 我懂了 ----------\n| OUTPUT |\n---------- 有谁知道如何使Ansible“漂亮地打印”输出?
38 ansible 

3
Ansible安全最佳做法
我将把Ansible引入我的数据中心,并且我正在寻找有关在哪里放置控制机器以及如何管理SSH密钥的最佳安全性最佳实践。 问题1:控制机 我们当然需要一台控制机。控制计算机上已保存了公共SSH密钥。如果攻击者有权访问控制计算机,则它可能有权访问整个数据中心(或由Ansible管理的服务器)。那么在数据中心或远程控制机器(例如我的笔记本电脑远程连接到数据中心)中配备专用的控制机器会更好吗? 如果最佳实践是使用笔记本电脑(当然可能会被盗,但是我可以将我的公钥安全地在线存储在云中或离线保存在便携式加密设备上),如果我需要使用某些Web界面像Ansible Tower,Semaphore,Rundeck或Foreman这样的Ansible是否需要在集中式计算机上安装到数据中心?如何保护它并避免它成为“单一攻击点”? 问题2:SSH密钥 假设我需要使用Ansible来完成一些需要由root执行的任务(例如安装软件包或类似的东西)。我认为最佳实践不是在受控服务器上使用root用户,而是为具有sudo权限的Ansible添加普通用户。但是,如果Ansible需要执行几乎所有任务,则需要通过sudo访问每个命令。那么,什么是最佳选择: 让Ansible使用root用户(其公共密钥保存在 ~/.ssh/authorized_keys 创建一个专用于具有sudo访问权限的Ansible的非特权用户 让Ansible用户通过sudo指定密码来运行每个命令(每个使用Ansible来控制服务器的sysadmin都必须知道这是唯一的) 让Ansible用户通过sudo运行每个命令,而无需指定任何密码 还有其他提示吗?

6
在Ansible中追加到列表或向字典添加键
(与Ansible角色中的回调或挂钩以及可重复使用的一系列任务有关): 有没有比(ab)使用jina2模板表达式更好的方法来追加到列表或在Ansible中向字典添加键? 我知道您可以执行以下操作: - name: this is a hack shell: echo "{% originalvar.append('x') %}New value of originalvar is {{originalvar}}" 但是真的没有某种元任务或辅助工具可以做到这一点吗? 它感觉很脆弱,似乎没有记录,并且依赖于有关Ansible中变量如何工作的许多假设。 我的用例是多个角色(数据库服务器扩展),每个角色都需要为基本角色(数据库服务器)提供一些配置。它不像在db服务器配置文件中添加一行一样简单。每次更改都适用于同一行,例如扩展名,bdr并且pg_stat_statements必须都出现在目标行上: shared_preload_libaries = 'bdr, pg_stat_statements' Ansible方法是使用正则表达式多次提取配置文件(每次扩展名一次)来处理配置文件吗,该正则表达式会提取当前值,对其进行解析,然后对其进行重写?如果是这样,您如何在多次运行中使该幂等? 如果配置比此解析难,并且不像附加另一个逗号分隔的值那么简单怎么办?考虑一下XML配置文件。
34 ansible 

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.