Questions tagged «ansible»

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

7
如何通过ansible生成主机SSH密钥?
我正在尝试通过ansible(和ssh-keygen)在少数远程服务器上重新生成ssh主机密钥,但是文件似乎没有显示出来。剧本运行正常,但遥控器上的文件未更改。 我需要诉诸echo -e黑客,因为这些远程设备正在运行Ubuntu 14.04,并且没有python-pexpect可用版本的正确版本(根据ansible)。 我想念什么?我的剧本和输出如下: 剧本 --- - hosts: all become: true gather_facts: false tasks: - name: Generate /etc/ssh/ RSA host key command : echo -e 'y\n'|ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C "" -N "" register: output - debug: var=output.stdout_lines - name: Generate /etc/ssh/ DSA host key command : …
11 ansible  ssh-keys 

3
如何减少某些Ansible任务的冗长性,以免将密码泄漏到syslog中?
有时我想使用Ansible lineinfile或blockinfile模块将密码写入某些配置文件。如果这样做,整个行或块(包括密码)都将出现在我的syslog。 由于我不认为syslog将密码存储在安全的地方,我如何告诉Ansible不要将密码泄漏到其中syslog?我希望有办法做到这一点,否则我会认为这是Ansible中的一个大安全问题。 您可以使用以下临时命令来复制它: ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret' 这是最终结果syslog: ansible-blockinfile: Invoked with directory_mode=None force=None remote_src=None insertafter=None owner=None follow=False marker=# {mark} ANSIBLE MANAGED BLOCK group=None insertbefore=None create=True setype=None content=None serole=None state=present dest=/tmp/ansible_password_leak selevel=None regexp=None validate=None src=None seuser=None delimiter=None mode=None backup=False block=Password = secret …

3
在主机之间分配ssh公钥
我正在使用Ansible设置一些计算机,并且需要启用它们之间的无密码连接。我有一个数据库主服务器和几个从属服务器。对于初始复制,从属服务器需要ssh进入主服务器并获取数据库的副本。我不确定将所有从属公共密钥动态添加到masters authorized_keys文件的最佳方法是什么。 我已经考虑过将奴隶的公共密钥作为变量提供,然后通过authorized_key模块添加它们。但是,我必须维护密钥列表。我正在寻找一种方法,我只需在slaves组中添加另一台主机,其余主机将自动工作。 有任何想法吗? 更新: 到目前为止,我得到了以下伪代码: # collect public keys from slave machines - name: collect slave keys {% for host in groups['databases_slave'] %} shell: /bin/cat /var/lib/postgresql/.ssh/id_rsa.pub register: slave_keys #how to add to an array here? {% endfor %} # Tasks for PostgreSQL master - name: add slave public key …

3
ansible blockinfile禁用标记
我是ansible的新手,但是我能够成功使用blockinfile函数。但是我不知道如何防止插入标记。我阅读了文档,但似乎没有对其进行描述。 这就是在blockinfile写入的每个文件中显示的内容。 # BEGIN ANSIBLE MANAGED BLOCK # END ANSIBLE MANAGED BLOCK
11 ansible 

2
我在哪里可以找到最新的ansible错误日志
我使用了一个ansible脚本来启动服务器配置。我从服务器内部运行脚本,并在本地主机清单中执行所有操作。 现在,我与服务器的ssh连接已关闭,我找不到日志文件。标准日志路径在哪里?在/ var / log下没有可用的文件。 我正在再次运行该脚本,并且希望该错误再次出现,但这不是一个很好的解决方案,因为脚本需要花费几个小时才能运行到错误点。
11 ansible 

4
在ansible部署期间验证nginx.conf
我有一台Ansible设置的服务器,它运行着许多站点。 我的Ansible任务大致如下: - name: site nginx config template: src="nginx-site.conf.j2" dest=/etc/nginx/conf.d/{{item.name}}.conf owner=root group=root mode=0444 with_items: sites notify: restart nginx - name: nginx conf template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0444 notify: restart nginx 我想使用validateAnsible模板模块的参数来调用nginx -t,并确保我的新配置在语法上有效。它适用于主要的nginx.conf: template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0444 validate="/usr/sbin/nginx -c %s -t" 但这似乎并没有改变站点特定的配置文件。放置validate特定于站点的模板无效,因为需要将它们包装在http指令中才能生效。 我该怎么做才能检查这些特定于站点的文件的有效性?
11 nginx  ansible 

1
使用Ansible进行用户管理的最新技术是什么?
我已经使用Ansible取得了巨大的成功,已经有3年了,用于管理数量不断增长的linux系统。在深入探讨我的问题之前,我需要设置一些背景。 作为日常工作的一部分,我为所有在一家风险投资/孵化器公司的保护下运营的公司进行系统设计,部署和维护。我们的投资组合公司之间存在很多异花授粉,因此,我们不能说只有用户A,B和C才需要访问X公司的系统。他们可能还需要访问Y公司的系统。每个公司的环境都位于不同的git存储库中,这使情况变得复杂。这意味着要将用户部署到不同公司系统的代码很多。我最终会像这样复制/粘贴代码块,以将用户部署到特定公司的系统: - name: add several users user: > name={{ item.name }} state=present groups={{ item.groups }} uid={{ item.uid }} password={{ item.password }} shell=/bin/bash with_items: - { name: 'user1', groups: 'ssh-access,sudo', uid: '501', password: '<redacted>' } - { name: 'user2', groups: 'ssh-access,sudo', uid: '502', password: '<redacted>' } tags: users - name: …
10 linux  ansible 

1
根据环境配置SSH凭据
我试图弄清楚如何使用Ansible为生产和暂存环境分别配置SSH凭据。我知道您可以通过将-ior或--inventory-file参数传递给ansible-playbook命令来使用不同的清单文件分别配置服务器IP地址和主机名。但是,我看不到这样的选项ansible.cfg。当前,凭据以以下/etc/ansible/ansible.cfg方式存在: [defaults] private_key_file=/home/caleb/.ssh/staging_key.pem remote_user=ubuntu sudo_user=root gathering=explicit 如何配置多个SSH凭据,一个用于生产,一个用于登台?
10 ansible 

1
Ansible剧本无法通过复杂的开关运行make&configure
这是该问题的后续内容。我正在尝试使用Ansible来配置Vagrant VM。VM正在运行CentOS 6.4。我正在使用以下(缩写)ansible剧本: - hosts: default vars: home: '/home/vagrant' curl_version: '7_19_7' curl_url: 'https://github.com/bagder/curl/archive/curl-{{ curl_version }}.tar.gz' curl_dir: '{{ home }}/curl-curl-{{ curl_version }}' # user: vagrant remote_user: vagrant sudo: yes tasks: - name: Ensure required packages and installed and up to date - pt1 yum: pkg={{ item }} state=present with_items: - make …
10 vagrant  ansible 

2
我应该在Mac OSX Mavericks上使用python pip或homebrew安装Ansible吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我最近转移到使用OSX来管理我的linux机器,所以我对在OSX上使用linux程序很陌生。 我想将Vagrant与Ansible一起使用来引导我的开发环境,所以我需要先安装它。 但是,我发现了在OSX上安装Ansible的两种方法: 点子:http : //devopsu.com/guides/ansible-mac-osx.html 自制程序:https : //github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb 自从我第一次接触该指南以来,我已经使用pip方法安装了Ansible。 两种方法的优缺点是什么?我应该使用pip还是自制软件安装Ansible? 我发现容易安装会干扰自制程序: Warning: /usr/bin occurs before /usr/local/bin This means that system-provided programs will be used instead of those provided by Homebrew. The following tools exist at both paths: easy_install easy_install-2.7

3
拥有不带密码的sudo的匿名用户是否不安全?
我是Ansible的新手。到目前为止,我见过的大多数VPS设置指南都是这样做的: 禁止root登录 创建一个只能使用ssh(不能使用密码)登录的新用户 wheel使用无密码sudo权限将新用户添加到组 我了解(1)和(2),但不了解(3)。 当然,无密码sudo就像登录一样root吗?我了解好处(便利),但这不是很不安全吗? 我意识到管理员以各种方式运行他们的网络,因此可以说这是“主观的”,但这是非常常见的做法,甚至在各种官方的可访问文档以及托管公司发布的指南中都显示了这种情况。这违背了常识。它背后的逻辑是什么?
10 linux  security  vps  ansible  sudo 

4
创建非root用户并在Ansible中禁用root SSH
我正在尝试编写Ansible剧本来引导我的服务器。默认情况下,在Linode上,我只能以root用户身份使用密码登录,因此我的剧本将以root用户身份登录,使用SSH密钥创建非root用户,并禁用root用户和密码SSH。 这是一个问题,因为由于禁用了root登录,我现在无法再次运行该剧本!我希望剧本具有幂等性,并且不必在引导主机后添加和删除主机。
9 ansible 

3
“单服务器多个管理员”的配置管理
我们已经为小型关联设置了运行基础结构的服务器。到目前为止,我们已经尝试使用Ansible管理配置,但这并没有取得很大的成功。也许我们做错了。 原则上,这个想法是大多数时间该服务器将保持不动,人们会在一个蓝色的月亮中添加或更改事物。这使得至关重要的一点是,服务器上进行了任何配置和运行的文件都必须有据可查且清晰明了,因为不经常管理系统的人肯定会丢失概述(更不用说记住细节了)。此外,随着时间的推移,将管理此服务器的人员组的组成发生变化(当人们离开并加入“委员会”时)。 我们从全新安装开始,每当我们想要设置某些内容(nginx,phpfpm,postfix,防火墙,sftp,munin等)时,都会在ansible中添加角色。也许由于我们的经验不足,我们当然永远无法完全按照我们想要的方式来输入一组烦人的任务,这也是因为配置过程是一个反复试验的过程。这意味着实际上,我们通常会先配置要在服务器上运行的任何服务,然后转换为可完成的任务。您可以看到前进的方向。人们忘记了测试然后再测试任务,或者害怕这样做会破坏事物,甚至更糟:我们忘记或忽略将事情添加到ansible中。 如今,我们对Ansible配置实际上反映了服务器上配置的内容几乎没有信心。 目前,我看到三个主要问题: 很难(阅读:我们没有很好的方法)测试烦人的任务而又不会冒险破坏事情。 它首先要弄清楚所需的配置,然后弄清楚如何将其转换为可完成的任务,因此需要付出额外的工作。 (理想情况下)我们没有足够频繁地使用它来建立熟悉度和例行程序。 这里一个重要的考虑因素是,无论我们最终要做什么,新手都应该容易地学习绳索而无需大量实践。 是否有可行的替代方案仍然可以提供一些保证和检查(类似于将Ansible文件合并到某些文件master),而这些保证和检查却无法提供“配置事物并写下您所做的事情”? 编辑:我们已经考虑过提交/etc到git。有没有一种合理的方式来保护机密(私钥等),但是仍然可以以某种方式在服务器外部使用配置存储库?

2
在AWS中使用Docker / Ansible与Ansible,Puppet和Foreman的不可变服务器模型吗?
我们遇到了一个有趣的争论,并且陷入了两个阵营。我对我们可能会缺少的想法或陷阱的任何特定问题感兴趣。确实,任何可以帮助我们做出决定或指出我们无法解释的事情的事物。我知道这会绕开“无意见”规则,但我希望这仍然是一个可以接受的问题。很抱歉,长度也有很多细微差别。 1)一方面(我-我并非毫无偏见)发现不可变服务器模型对于云系统非常有趣。为此,我们原型化了将基础架构的所有组件移入Docker的过程。我们的定制应用程序通过Jenkins直接构建到部署到本地Docker Registry的Docker映像中。然后,我们创建了大量Ansible角色和一本剧本,该剧本可以连接到空服务器,安装Docker,然后告诉Docker根据需要安装所有容器。几分钟后,整个应用程序及其所有支持的基础结构都已连接并正常工作-日志记录,监视,数据库创建/填充等。完成的机器是一个自包含的QA或开发环境,具有与之完全相同的副本。应用。我们的扩展计划是制造新的Playbook,以从基本受信任的AMI(可能是非常裸露的映像)构建新的AWS服务器,进行生产应用程序的滚动部署以处理配置管理和发布,并且通常不再编辑服务器-只是让他们重新。我不担心在实践中得到我所描述的内容-即使这是一个合理的模型。 2)另一个阵营希望使用Puppet进行配置管理,Ansible部署我们的自定义应用程序,这些应用程序是从我们的构建过程中生成的tarball,Foreman可以处理整个过程的触发和管理,而Katello可以做一些基础工作图像管理。发布将涉及Puppet根据需要更改配置,并通过一定数量的Foreman协调来部署更新的组件。如果我们需要新服务器,则将可以相当快地构建服务器,但目的不是使它们成为一次性使用的标准流程。尽管使用寿命长,但它更接近phoenix服务器模型。 因此,我的问题确实归结为:具有以上所述工具的不可变服务器模型实际上看起来像是现实的吗?我喜欢这样的想法,即我们的登台过程实际上可以实时构建应用程序的完整克隆,让质量检查人员锤打它,然后只需翻转数据库存储和一些DNS设置即可使其生效。 还是不变的服务器模型实际上会失败?我们在AWS和云环境方面都有丰富的经验,因此这并不是真正的问题-而是如何可靠地部署合理复杂的应用程序。由于我们经常发布,因此这特别有趣。 除了实际为我们创建EC2服务器外,Ansible可以完成大多数所需的工作,这并不难。我无法理解为什么您实际上完全需要这个模型中的Puppet / Foreman / Katello。在我所知道的任何工具中,Docker都比自定义部署脚本更加整洁和简单。当您不再担心必须就地配置它们并使用新配置再次构建它们时,Ansible似乎比Puppet使用起来简单得多。我是KISS负责人的粉丝-特别是在墨菲定律猖ramp的自动化领域。机械越少,IMO越好。 关于此方法的任何想法/意见或建议将不胜感激!

2
如何在一个Ansible脚本中为不同的剧本指定不同的主机
据我了解,每本剧本都有一个主机条目。我想知道,如果我创建一个包含其他剧本的容器剧本,可以为每个包含的剧本参数化主机。所以像 --- - include playbook_1.yml hosts: tag_postgres - include: playbook_2.yml hosts: tag_rabbitmq 我能够将所有不同的剧本放到一个脚本中并调用,但是这样一来,我就无法将某些set_fact从一个剧本重用到另一个剧本中,因此存在很多任务重复。 这个问题的另一个推论是,我可以在亚马逊上启动ec2s吗? hosts: localhost 并配置已启动的ec2,这将基本上从配置清单-i ec2.py,并将主机指定为 hosts: tag_<some_tag> 是通过同一个剧本还是一组包含的剧本(不同的角色)发生的?
9 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.