Articles of ansible

将variables传递给可靠的剧本

我需要在我的目标机器上从S3中构build一个构build。 因此,我需要将S3密钥和秘密以某种方式传递给正确的游戏手册。 我知道我可以在其中定义它们 库存 剧本本身 但我真的不想在那里存储凭据。 我可以在本地机器(或类似的东西)中使用环境variables吗?

是否有可能只同步一个目录的内容?

有以下任务 – name: synchronising … synchronize: src=files/to/synchronize dest=/tmp/1 files/to/synchronize目录是同步的,完成后目标机器上会有一个/tmp/1/synchronize目录。 是否有可能使用syncrhonize任务recursion地同步源目录的内容,以便它的所有内容都在/tmp/1没有额外的深度级别? 我做了什么: 我通过文件 我试图谷歌 我经历了一个完整的同步模块源代码

Ansible,连接文件

我有一个不同的angular色ansible playbook。 在每个angular色中,我想添加几行到同一个configuration文件。 例如,添加部分到一个ini文件: [部分] 参数1 =值1 参数2 =值2 什么是最好的方法来完成这个? 是否可以连接模板件? 例如: [部分] param1 = {{value_var1}} param2 = {{value_var2}} 任何帮助是受欢迎的。 提前致谢

在Ansible上转发Kerberos身份validation

我有一个可控的控制机器(host-A),需要与host-C(一个没有本地用户的Windows机器(这是一个Active Directory))交谈。 主机-A对主机C没有networking访问权限,但可以使用主机-B进行通信。 主机-B它是一个Linux机器。 host-A通过ssh访问主机B. 本文后面我创build了一个nginx服务器来在主机B上路由WinRMstream量 server { listen 5986 default ssl; server_name localhost; ssl_certificate ssl/nginx.crt; ssl_certificate_key ssl/nginx.key; location /host-c { proxy_pass https://host-c-address:5986/wsman; } } 我的主机C的库存清单就像: [windows] host-c ansible_host=host-b ansible_winrm_path=host-c 而windows的group_vars是: ansible_user: myuser ansible_pass: andmypass ansible_port: 5986 ansible_connection: winrm ansible_winrm_realm: HOSTCDOMAIN.LOCAL ansible_winrm_scheme: https ansible_winrm_transport: kerberos ansible_winrm_server_cert_validation: ignore 我迄今testing的东西 1testing没有Kerberos 改变了这一行: ansible_winrm_transport: ssl 这是不可能的,因为host-c不能拥有本地用户。 fatal: [host-c]: […]

Ansible:无法通过ssh连接到主机

任何人都知道为什么这不起作用? 我使用sshpass的编译版本在Cygwin上使用Ansible。 我按照http://www.jeffgeerling.com/blog/running-ansible-within-windows中的说明进行设置。 这是我的/ etc / ansible / hosts文件: 10.240.227.56 ansible_ssh_pass='password' ansible_user='domain\userid' 10.240.227.59 ansible_ssh_pass='password' ansible_user='domain\userid' ansible_become=true ansible_become_method=sudo ansible_become_user=privilegeduser 我试着用两个不同的主机和两个不同的configuration来看看我能否缩小这个问题,但是他们的performance是一致的。 以下是我尝试ping主机时得到的结果: $ ansible all -vvv -m ping No config file found; using defaults <10.240.227.56> ESTABLISH SSH CONNECTION FOR USER: domain\userid <10.240.227.59> ESTABLISH SSH CONNECTION FOR USER: domain\userid <10.240.227.56> SSH: EXEC sshpass -d48 ssh -C -q -o […]

在Dockerfile的SSHauthentication问题中本地运行Ansible

由于身份validation问题,我无法在Dockerfile中运行我的可靠剧本。 这是我的dockerfile: FROM ubuntu:14.04 MAINTAINER hyperfocus # Update system and install ansible RUN apt-get -y update RUN apt-get install -y python-yaml python-jinja2 git RUN git clone http://github.com/ansible/ansible.git /tmp/ansible # Set environment WORKDIR /tmp/ansible ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin ENV ANSIBLE_LIBRARY /tmp/ansible/library ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH # Add repo key and add it to known hosts ADD id_rsa /root/.ssh/id_rsa […]

通过terminalSSH成功​​,但通过Ansible相同的SSH连接在同一台机器上失败?

任何人都可以阐明为什么发生这种情况? 我用用户basicuserlogin到机器A,客户端。 当我尝试在机器B(服务器机器上,作为远程​​用户)上运行一个可靠的剧本。 1)我的私钥/公钥DEFINIELY匹配,在客户端A(以basicuser身份)工作的“ssh user @ serverB”显而易见 – 安全和SSH都指向相同的私钥 2)我〜/ .ssh / known_hosts不过时 3)my〜/ .ssh和〜/ .ssh / *权限是正确的(分别由basicuser,chmod 700拥有) 4)我的hosts.ini文件包含所需的“ansible_ssh_user = remoteuser ansible_ssh_private_key_file =〜/ .ssh / id_rsa”(并且格式正确) 我知道id_rsa匹配/home/remoteuser/.ssh中机器B的“authorized_keys”文件中唯一的条目。 这里是从客户端A通过terminal的SSH: basicuser@serverA:~$ ssh remoteuser@serverB Enter passphrase for key '/home/basicuser/.ssh/id_rsa': Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Jul […]

不能从包含的angular色中运行处理程序

我试图在同一angular色的处理程序上运行通知,并且该angular色被包含为依赖项。 这是我的剧本 root@monitor:/etc/ansible# cat monitor.yml — – hosts: local connection: local become: yes become_user: root roles: – common – role: sensu sensu_install_server: true 我的通用文件看起来像 root@monitor:/etc/ansible# cat roles/common/tasks/main.yml – name: Add the OS specific variables include_vars: '{{ ansible_os_family }}.yml' # # ansible run script – name: copy the ansible-run script copy: src=ansible-run.py dest=/usr/bin/ansible-run owner=root group=root mode=0700 […]

Ansible:更新select的软件包,如果没有安装则不安装

我有几十台CentOS 6和7的主机。我最近开始使用Ansible来帮助pipe理它们,但我仍然是一个新手。 像所有人一样,我定期需要在这些机器上更新软件包,特别是出于安全原因。 但是,我不想更新它们上的所有软件包,只是特定的软件包,这些软件包可能因机器而异,具体取决于其angular色。 我已经使用了Ansible的yum命令( state = latest )和一个特定的软件包列表来更新这些主机,但是直到今天我才注意到,在对主机运行时,如果没有安装其中一个列出的软件包在那台机器上它将被安装。 我需要的是一种向Ansible提供软件包列表的方法,然后对每个主机执行操作: – 如果软件包存在,则将其更新为最新版本; – 如果包装不存在,什么都不要做。 有没有一个可行的方法来做到这一点?

如何从运行在云中的实例中运行Ansible的gce.py脚本?

我的目标是在Google云中创build一个计算引擎实例,从中我可以运行可执行脚本来进一步创build将通过GKE运行容器的其他实例。 我已经想出了一些事情: 如何创build一个ansible和gce.py可以运行的实例 如何给这个实例足够的权限来调用apache-cloudlib 这个ansible使用库存中的'ansible_ssh_host'来build立连接 gce.py可以使用外部IP地址或内部IP地址,具体取决于shellvariablesINVENTORY_IP_TYPE的值。 计算引擎环境都没有configuration这些configuration来使用由gcloud compute ssh-config生成的SSH密钥,如下所示: Host compute-instance.us-central1-a.project-name Hostname 99.99.99.99 IdentityFile /home/user/.ssh/google_compute_engine *其中99.99.99.99是公共IP地址 最终的结果是,我可以ssh计算实例。中央1,a.project名称,但不公开的IP,99.99.99.99或私人IP,没有指定私钥文件(google_compute_engine),这是不gce.py脚本中的一个选项。 我可以通过添加内部IP作为Host的另一个条目来获得我想要的行为: Host compute-instance.us-central1-a.project-name 10.128.0.2 ..但是,在configuration文件中有一个注释,该文件是自动生成的(而不是做那件事): # The following has been auto-generated by "gcloud compute config-ssh" # to make accessing your Google Compute Engine virtual machines easier. # # To remove this blob, run: # # gcloud compute config-ssh […]