如何使用Ansible playbook www在/srv基于Debian的系统上创建目录?
是否可以在Ansible主机上运行命令?
我的方案是我想从内部托管的git服务器进行结账(并且在公司防火墙外部无法访问).然后我想将结帐(tarballed)上传到生产服务器(外部托管).
目前,我正在考虑运行一个执行结帐的脚本,对其进行压缩,然后运行部署脚本 - 但是如果我可以将其集成到Ansible中,那将更为可取.
我正在使用Ansible进行一些简单的用户管理任务和一小组计算机.目前,我将我的手册设置为hosts: all,我的主机文件只是一个列出了所有机器的组:
# file: hosts
[office]
imac-1.local
imac-2.local
imac-3.local
Run Code Online (Sandbox Code Playgroud)
我发现自己经常不得不针对一台机器.该ansible-playbook命令可以限制这样的播放:
ansible-playbook --limit imac-2.local user.yml
Run Code Online (Sandbox Code Playgroud)
但这似乎有点脆弱,特别是对于潜在的破坏性剧本.离开limit旗帜意味着剧本将在任何地方运行.由于这些工具偶尔会被使用,所以似乎值得采取措施来简化播放,因此我们不会在几个月后意外地进行核实操作.
是否有将playbook运行限制为单台机器的最佳实践?理想情况下,如果省略一些重要细节,剧本应该是无害的.
如何以非交互方式为Ansible指定sudo密码?
我正在运行这样的Ansible剧本:
__CODE__
但我想像这样运行它:
__CODE__ --sudo通= 12345
有办法吗?我想尽可能地自动化我的项目部署.
我是ansible的新手并且想知道如何这样做,因为以下不起作用
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Run Code Online (Sandbox Code Playgroud)
django_fixtures我的变量在哪里?
variables command-line command-line-arguments ansible ansible-playbook
如何使用远程系统上的Ansible模块移动/重命名文件/目录?我不想使用命令/ shell任务,我不想将文件从本地系统复制到远程系统.
我遇到了一个我以前从未见过的错误.这是命令和错误:
$ 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
104.55.47.224 : ok=0 changed=0 unreachable=0 failed=1
Run Code Online (Sandbox Code Playgroud)
这是create_api.yml文件:
---
- hosts: api
remote_user: root
roles:
- api
Run Code Online (Sandbox Code Playgroud)
这是hosts文件:
[api]
104.55.47.224
Run Code Online (Sandbox Code Playgroud)
我可以删除角色部分,它不会进入第一个任务,它将使它只会使它成为行/bin/sh: 1: /usr/bin/python: not found.这可能会发生什么?
注意:如果有人正在ping IP地址并且没有得到响应,您应该知道自从粘贴代码后我已经更改了IP地址.
编辑 …
我正在设置一个Ansible手册来设置几个服务器.如果当前主机是我的本地开发主机,在我的主机文件中名为"local",那么我只想运行几个任务.我怎样才能做到这一点?我在文档中的任何地方都找不到它.
我在if语句时尝试了这个,但它失败了,因为ansible_hostname解析了创建机器时生成的主机名,而不是你在hosts文件中定义的主机名.
- name: Install this only for local dev machine
pip: name=pyramid
when: ansible_hostname == "local"
Run Code Online (Sandbox Code Playgroud) 我看到Ansible提供了一些我们可以在playbooks和模板文件中使用的预定义变量.例如,主机IP地址是ansible_eth0.ipv4.address.谷歌搜索和搜索文档我找不到所有可用变量的列表.有人会为我列出它们吗?
有没有办法只在ansible playbook中运行一个任务?
例如,在roles/hadoop_primary/tasks/hadoop_master.yml.我有"start hadoop job tracker services"任务.我可以运行那一项任务吗?
hadoop_master.yml文件:
---
# Playbook for Hadoop master servers
- name: Install the namenode and jobtracker packages
apt: name={{item}} force=yes state=latest
with_items:
- hadoop-0.20-mapreduce-jobtracker
- hadoop-hdfs-namenode
- hadoop-doc
- hue-plugins
- name: start hadoop jobtracker services
service: name=hadoop-0.20-mapreduce-jobtracker state=started
tags:
debug
Run Code Online (Sandbox Code Playgroud)