对于备份,我需要遍历清单文件中的所有主机,以确保备份目标存在.我的结构看起来像
/var/backups/
example.com/
sub.example.com/
Run Code Online (Sandbox Code Playgroud)
所以我需要一个(内置)变量/方法来列出库存文件中的所有主机,而不仅仅是一个组.
对于团体,它看起来像这样
- name: ensure backup directories are present
action: file path=/var/backups/{{ item }} state=directory
owner=backup group=backup mode=0700
with_items: groups['group_name']
tags:
- backup
Run Code Online (Sandbox Code Playgroud) 我想在安装期间更改文件/var/www/kibana/config.js中的一行代码
elasticsearch: "http://"+window.location.hostname+":9200"
Run Code Online (Sandbox Code Playgroud)
至
elasticsearch: "http://192.168.1.200:9200"
Run Code Online (Sandbox Code Playgroud)
在这里,我尝试使用lineinfile来执行此操作,如下所示
- name: Comment out elasticsearch the config.js to ElasticSearch server
lineinfile:
dest=/var/www/kibana/config.js
backrefs=true
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
state=present
Run Code Online (Sandbox Code Playgroud)
我已经设置的变量{{elasticsearch_URL}},并{{elasticsearch_port}}以http://192.168.1.200和9200分别.
这是我遇到的错误消息:
ERROR: Syntax Error while loading YAML script, /Users/shuoy/devops_workspace/ansible_work/logging-for-openstack/roles/kibana/tasks/Debian.yml
Note: The error may actually appear before this position: line 29, column 25
regexp="(elasticsearch.* \"http.*)$"
line="elasticsearch\: \" {{ elasticsearch_URL }}:{{ elasticsearch_port }} \" "
^
Run Code Online (Sandbox Code Playgroud) 我创建了一个repo来重现我的场景.
基本上我们正在为我们的主机加载一个库存,我们可以通过库存覆盖每个主机的值而没有问题,但是想尝试使用host_vars.
我不是100%清楚主机变量如何与主机匹配.我阅读了ansible repo的例子,但似乎无法按照文档记录工作,所以我正在寻找对我们设置的一些审查.
当我ansible-playbook -i ansible.inventory site.yml -clocal在我的示例repo中运行命令时,我希望host_vars/{{ ansible_hostname }}读取文件并覆盖变量中设置的任何内容,但这似乎不会发生.
有人可以指点我一个工作的例子,这样我就能看出我们哪里出错了?
如何在python脚本中运行playbook?在python中使用ansible模块的等价物如下:
ansible -i hosts dbservers -m setup
ansible-playbook -i hosts -vvvv -k site.yml
Run Code Online (Sandbox Code Playgroud)
我在http://docs.ansible.com/developing_api.html上查看他们的文档,但他们的示例非常有限.
在使用Ansible的Git模块进行内部托管的私有git存储库(例如,在GitLab实例上)的克隆,推送或拉取时,如何指定用户名和密码以通过Git服务器进行身份验证?
我在文档中看不到任何方法.
我正在尝试在Amazon AWS上创建一个带有ansible的小型webapp基础架构,我想完成所有过程:启动实例,配置服务等,但我找不到合适的工具或模块来处理来自ansible的.主要是EC2发布.
非常感谢.
当我针对localhost主机启动我的playbook时出现此错误.
TASK [setup] *******************************************************************
fatal: [127.0.0.1]: UNREACHABLE! => {"changed": false, "msg": "SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue", "unreachable": true}
to retry, use: --limit @deploy-test-env.retry
PLAY RECAP *********************************************************************
127.0.0.1 : ok=0 changed=0 unreachable=1 failed=0
Run Code Online (Sandbox Code Playgroud)
我的hosts文件有这个配置:
[local]
127.0.0.1
Run Code Online (Sandbox Code Playgroud)
问题是什么?
谢谢!
如何在ansible task yaml文件中获取当前角色名称?
我想做这样的事情
---
# role/some-role-name/tasks/main.yml
- name: Create a directory which is called like the current role name
action: file
path=/tmp/"{{ role_name }}"
mode=0755
state=directory
Run Code Online (Sandbox Code Playgroud)
此任务的结果应该是/tmp/some-role-name服务器上的目录
我创建了一个Ansible playbook,它创建了一个云实例,然后在实例上安装了一些程序.我想多次运行这个剧本(不使用bash脚本).是否可以使用循环将这两个任务循环在一起(IE One循环用于两个任务?).到目前为止,我所能找到的只是每个任务的一个循环
问题很简单:(ansible_user前ansible_ssh_user)和remote_userAnsible 之间的区别是什么,除了第一个是设置文件而后者设置为播放/角色?它们如何与-u/ --user命令行选项相关?
ansible ×10
ansible-playbook ×10
ansible-2.x ×2
amazon-ec2 ×1
loops ×1
python ×1
regex ×1
ssh ×1