我已经包含了一个不同的Ansible .yml文件的variables。 如何在playbook中将该variables打印到STDOUT ? 下面是一个示例剧本来展示我想要达到的目标: — – hosts: host1 var_files: configure.yml tasks: – name: Print to stdout action: {{build}}.stdout build是从另一个yml文件中包含的variables
假设我有一台WildFly服务器,可以通过Ansible远程安装到一台机器上。 现在我想让Ansible通过运行standalone.sh脚本启动它。 – name: start wildfly shell: "{{bin}}/standalone.sh -b 0.0.0.0 2>&1 >/dev/null " args: chdir: "/tmp/{{wildfly}}" 当我这样做,服务器开始,但我的Ansible剧本挂起。 当我在命令行的末尾添加& (这就是为什么我使用shell任务)时,服务器启动并立即被终止。 (类似的,当我使用command而不是shell 。 我明白, service任务需要在/etc/init.d或类似的条目,所以这不是真正的帮助。
使用新的“成为”的语法,你如何configuration你的手册以普通用户的身份login到主机,切换到root用户并要求input密码? 我试过了: — – hosts: foo gather_facts: no remote_user: martin become: yes become_method: su tasks: – name: update yum: name=tree state=latest 这个剧本只是在TASK阶段。 我也尝试删除become_method并使用become_method ansible-playbook book.yml –ask-become-pass但也没有工作。 有任何想法吗?
有一些烦人的问题,我无法弄清楚。 这是我的代码。 如果我完全注释掉组和variables,一切正常。 但是,这是吐出下面的错误。 它基本上告诉我那个组不存在。 在这个例子中说msg:“Group”“all”不存在。 我不知道我需要做什么来解决这个问题。 – name: Add new group if it doesn't exist already group: name: "{{ group }}" when: group is defined – name: Add multiple users user: name: "{{ item.0 }}" comment: "{{item.1 }}" uid: "{{ item.2 }}" group: "{{ group }}" groups: "{{ groups }}" append: yes with_together: – […]
例如,我创build了以下angular色sqldb,rabbitmq,keystone,并在主要的剧本文件中提到了所有这三个angular色,但是在使用ansible-playbook命令执行主要剧本时,我只想要执行特定angular色例如:keystoneangular色,但不是sqldb,rabbitmqangular色。 我知道的一种方法是在主要剧本中包含angular色sqldb,rabbitmq的行,但是有没有直接从命令行使用剧本的方法?
我写了一个从git三个repo中克隆并从源代码编译的剧本。 每当我configuration使用这个剧本的机器时,无论本地副本是否已经更新,都会克隆回购。 我希望git克隆只能在第一次发生,而在其他时间运行剧本的时候,我希望Ansible跳过这一步。 我已经阅读了关于Ansible文档的“本地事实”,但我很难理解它应该如何实施。 这是我写的剧本: — – name: Install required packages apt: name={{item}} state=installed with_items: – "librdkafka-dev" – "libyajl-dev" – "librdkafka1" – "cmake" sudo: yes tags: kafkacat – name: Git clone kafkacat git: repo=git://github.com/company/kafkacat.git dest={{ kafkacat_installdir }} accept_hostkey=yes force=yes tags: kafkacat – name: Git clone librdkafka git: repo=git://github.com/company/librdkafka.git dest={{ kafkacat_installdir }}/librdkafka force=yes version={{ librdkafka_git_version }} […]
我有这个: – stat: path=/etc/pki/tls/certs/{{ item.ServerName }}.crt with_items: – "{{ prod }}" register: sslcheck – debug: var=sslcheck – name: Create self-signed SSL cert command: openssl req -new -nodes -x509 -subj "/C=US/ST=Oregon/L=Portland/O=IT/CN=${item.ServerName}" -days 3650 -keyout /etc/pki/tls/private/{{item.ServerName}}.key -out /etc/pki/tls/certs/{{item.ServerName}}.crt -extensions v3_ca creates=/etc/pki/tls/certs/{{item.ServerName}}.crt with_items: – "{{ prod }}" when: sslcheck.results.stat.exists == False 但是,我的条件不起作用…当我debugging时,我仍然看到结果:错误或真实的sslcheck.results.stat.exists 那么,为什么它不工作? 结果: fatal: [httpd1] => error […]
我的项目是使用Ansible来pipe理三个服务器集群,每个集群都生活在波士顿,芝加哥和洛杉矶的不同城市和州。 所以在每个数据中心我有两个httpd服务器,三个tomcat服务器和两个数据库服务器。 在我的/ etc / ansible / hosts文件中,我已经根据机器的angular色http,tomcat和db设置了组。 我的问题是,我现在在/ etc / ansible / hosts中创build第二组(地理)组,其中相同的机器在数据中心的名称下面列出,还是应该在group_vars文件中完成? 还是应该在/ etc / ansible / hosts中设置一个父项:子项组?
我有一个ec2的实例,我正在运行ansible.I想创build一个用户有一个剧本,但没有密码,用户必须使用现有的pem文件进行身份validation,并且必须能够login到实例该文件。挑战部分这里是如何写剧本创build一个用户,并将其与现有的pem文件相关联。我完全没有想法。
我试图用下面的命令安装ansible: docker run -ti –rm ubuntu:14.04 bash echo "===> Updating cache…" && \ apt-get update && \ \ \ echo "===> Installing sudo…" && \ apt-get install -y sudo && \ \ \ apt-get install python-pip python-dev -y && \ apt-get install python-apt -y -q && \ \ \ echo "===> Installing Ansible 2.1.0.0…" && […]