Questions tagged «ansible-playbook»

Red Hat Ansible是模型驱动的配置管理,多节点部署/编排和远程任务执行系统。默认情况下,它使用SSH,因此您管理的节点上没有安装特殊软件。Ansible用Python编写,但可以用任何语言扩展。它有开放源代码版本和企业版。

12
将Ansible剧本安全地限制在一台机器上吗?
我正在Ansible中使用一小组计算机执行一些简单的用户管理任务。目前,我将我的剧本设置为,hosts: all并且我的hosts文件只是列出了所有计算机的一个组: # file: hosts [office] imac-1.local imac-2.local imac-3.local 我发现自己经常不得不瞄准一台机器。该ansible-playbook命令可以限制播放,如下所示: ansible-playbook --limit imac-2.local user.yml 但这似乎很脆弱,尤其是对于可能具有破坏性的剧本而言。省略limit标志意味着该剧本将在任何地方运行。由于这些工具只是偶尔使用,因此似乎值得采取措施实现万无一失的播放,因此从现在起几个月后,我们就不会意外地破坏某些东西。 是否存在将剧本的运行限制在一台机器上的最佳实践?理想情况下,如果忽略了一些重要细节,则剧本应该无害。


19
Ansible失败,出现/ bin / sh:1:/ usr / bin / python:找不到
我遇到了从未见过的错误。这是命令和错误: $ ansible-playbook create_api.yml PLAY [straw] ****************************************************************** GATHERING FACTS *************************************************************** failed: [104.55.47.224] => {"failed": true, "parsed": false} /bin/sh: 1: /usr/bin/python: not found TASK: [typical | install required system packages] ***************************** FATAL: no hosts matched or all hosts have already failed -- aborting PLAY RECAP ******************************************************************** to retry, use: --limit @/Users/john/create_api.retry …


7
如何自动安装Ansible Galaxy角色?
我所有的Ansible剧本/角色都签入了git repo。 但是,对于Ansible Galaxy角色,我总是必须在要从其运行Ansible的每台计算机上一一明确地下载它们。 在Ansible抱怨运行时缺少角色之前,甚至很难事先确切地知道需要哪些Ansible Galaxy角色。 应该如何管理Ansible Galaxy角色依赖性?我想让它们与我的其他Ansible代码一起检入我的git仓库中,或者当我在新机器上运行Ansible时自动识别并下载它们。


11
从命令行覆盖Ansible剧本的主机变量
这是我正在使用(server.yml)的剧本的一部分: - name: Determine Remote User hosts: web gather_facts: false roles: - { role: remote-user, tags: [remote-user, always] } 我的主机文件具有不同的服务器组,例如 [web] x.x.x.x [droplets] x.x.x.x 现在,我想执行ansible-playbook -i hosts/<env> server.yml并覆盖hosts: web从server.yml以运行此剧本[droplets]。 我可以直接覆盖一次,而不server.yml直接进行编辑吗? 谢谢。

4
将变量写入Ansible中的文件
我正在通过URI模块提取JSON,并希望将接收到的内容写到文件中。我能够获取内容并将其输出到调试器,因此我知道已经接收到内容,但是我不知道编写文件的最佳实践。

5
Ansible剧本与角色
根据Ansible文档,一本Playbook 是: ...非常简单的配置管理和多机部署系统的基础,与现有系统不同,它非常适合于部署复杂的应用程序。 而且,根据那些相同的文档,角色 是: ...基于已知文件结构自动加载某些vars_files,任务和处理程序的方式。按角色对内容进行分组还可以轻松与其他用户共享角色。 但是,这些与它们的不同用例之间的区别对我而言并不是立即显而易见的。例如,如果我将/etc/ansible/hosts文件配置为如下所示: [databases] mydb01.example.org mydb02.example.org [mail_servers] mymail01.example.org mymail_dr.example.org ...那么这是什么[databases]... 角色?还是某个地方的剧本YAML文件的名称?或者是其他东西?!? 如果有人可以向我解释这些差异,那么我对Ansible的理解将会大大增强! Playbook vs Role vs [databases]和类似条目/etc/ansible/hosts 如果在YAML文件中定义了Playbook,那么在哪里定义角色? 除了ansible.cfg在Ansible服务器上生活之外,我如何使用可用的Playbooks / Roles添加/配置Ansible?例如,当我跑步时ansible-playbook someplaybook.yaml,Ansible如何知道在哪里可以找到该剧本?

4
Ansible:将变量设置为文件内容
我正在使用ec2模块,ansible-playbook我想将一个变量设置为文件的内容。这是我目前的操作方式。 带有文件名的变量 Shell任务到cat文件 使用的结果cat传递给ec2模块。 我的剧本的示例内容。 vars: amazon_linux_ami: "ami-fb8e9292" user_data_file: "base-ami-userdata.sh" tasks: - name: user_data_contents shell: cat {{ user_data_file }} register: user_data_action - name: launch ec2-instance local_action: ... user_data: "{{ user_data_action.stdout }}" 我认为有一种更简单的方法可以执行此操作,但是在搜索Ansible文档时找不到。

6
Ansible:将命令的标准输出存储在新变量中吗?
在我的剧本中,我想创建一个保存外部命令输出的变量。之后,我想在几个模板中使用该变量。 这是剧本的相关部分: tasks: - name: Create variable from command command: "echo Hello" register: command_output - debug: msg="{{command_output.stdout}}" - name: Copy test service template: src=../templates/test.service.j2 dest=/tmp/test.service - name: Enable test service shell: systemctl enable /tmp/test.service - name: Start test service shell: systemctl start test.service 并说这是我的模板: [Unit] Description=MyApp After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 …

4
在Ansible中,如何获取运行Ansible用户名称的变量?
我正在编写一个部署过程的脚本,该过程采用运行ansible脚本的用户的名称(例如tlau),并基于该用户名和当前日期/时间在远程系统上创建一个部署目录(例如tlau-deploy-2014-10) -15-16:52)。 您会认为这在很多事实中都是可用的(例如LOGNAME或SUDO_USER),但是这些都被设置为“ root”或用于ssh进入远程系统的部署ID。这些都不包含本地用户,即当前正在运行ansible进程的用户。 如何编写脚本以获取运行ansible进程的用户的名称并在我的剧本中使用它?

2
如何相对于角色复制ansible?
我在角色中有一个复制任务,并且我希望该src位置相对于角色本身,而不是相对于调用角色的剧本。 我如何进行这项工作并使用myfrole/files内部任务中的文件myrole/tasks,我不想将角色名称包含在路径中,因为它没有多大意义。如果我这样做,如果我复制角色,它将中断。

2
Ansible:创建具有sudo特权的用户
我已经接管了Ubuntu 14.04服务器。它有一个名为“ deployer”的用户(与capistrano一起使用),因此,它需要sudo特权。通过此设置,我可以登录服务器并执行以下操作: workstation> ssh deployer@myserver myserver> sudo apt-get install git myserver> exit workstation> 我试图弄清楚如何使用Ansible(2.0.2.0版和python 2.7.3版)创建一个名为“ deployer”的用户,并能够使用该ID登录到服务器,然后使用诸如“ apt”之类的类似东西。 -get install”。我的剧本看起来像这样: --- - hosts: example become: yes tasks: - name: Update apt cache apt: update_cache: yes cache_valid_time: 3600 - group: name=sudo state=present - name: Add deployer user and add it to …

3
ansible:在角色中包含角色?
是否可以在角色中重用角色?我不通过的作用元/ main.yml文件中定义的依赖,但通过意味着包括在直接另一个角色的任务/ main.yml的作用? 例如,我在角色簿中定义了几个基本角色,在角色中定义了一些更高级的角色。我希望高级角色除了一些特定任务之外,还包括一些基本角色。 playbooks/ rolebooks/ some_role/ roles/ webtier/ tasks/ main.yml 在剧本/角色/网站/任务/main.yml中: - shell: echo 'hello' - { role: rolebooks/some_role } - shell: echo 'still busy' 谢谢

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.