我需要在通过stdin接受数据的目标服务器上运行命令。 我喂它的数据来自一个模板文件,包含敏感的数据,所以我宁愿不要让它坐在文件系统中,甚至一秒钟。 我试图find一种方法来抓取模板任务的输出,所以我可以将它传递给命令。 就像是: – name: generate data template: src: data.j2 dest: [I'd rather not have any files written] register: myvar – name: run command shell: "command < {{ myvar }}" 更好的方式去做这个不涉及写一个临时文件,喂它的命令,然后擦除它?
我需要针对多个正在运行的容器运行一个命令。 例如,假设我的应用程序需要在收到代码更新后针对数据库运行数据结构更新。 为此,我们要运行docker build <project_dir> -t latest ,然后docker stop; docker rm; docker run docker stop; docker rm; docker run docker stop; docker rm; docker run 。 在这个阶段,我们可以假定我们已经更新了容器的核心代码,但是我们仍然需要使用应用程序自己的工具来运行数据库更新。 从本质上讲,我需要一些方法来获取正在运行的容器列表,按照某些条件进行过滤,并将这些容器ID注册到Ansible。 然后为每个容器运行命令。 喜欢这个: – name: Get list of running containers docker: image: my-image:latest state: running register: container_ids 此任务将使用my-image:latest的运行容器的列表存储到container_ids 。 然后我们执行命令: – name: Exec the database update cmd: "docker […]
我正在尝试在我的任务中使用hostvars。 但是,似乎有道理的是插入variables,然后尝试在主variablesdict对象中查找它。 这是我的代码: – name: Configure the instance hosts: rundeck-masters sudo: True gather_facts: True tasks: – name: Gather EC2 facts ec2_facts: # show all known facts for this host – debug: msg={{ hostvars[groups['rundeck-masters'][0]][ansible_ec2_instance_id] }} – name: Snapshot the instance local_action: module: ec2_ami description: "Rundeck master – {{ ansible_date_time.date }}" instance_id: "{{ hostvars[groups['rundeck-masters'][0]][ansible_ec2_instance_id] }}" wait: no […]
我想把剧本应用到本地主机 ansible-playbook site.yml –limit localhost -vvvv 我得到了 TASK [setup] ******************************************************************* <127.0.0.1> ESTABLISH SSH CONNECTION FOR USER: root <127.0.0.1> SSH: EXEC ssh -C -vvv -o ControlMaster=no -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -tt 127.0.0.1 '/bin/sh -c '"'"'mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1456926531.44-231334347877988 `" && echo "` echo $HOME/.ansible/tmp/ansible-tmp-1456926531.44-231334347877988 `"'"'"'' <127.0.0.1> PUT […]
我已经通过Homebrew安装了Ansible(v1.4.4)和Python(2.7.6)。 我正在创build一个Ansible手册,用于在Mac(Mavericks)上设置一个本地开发机器。 当我到达使用mysql_db模块导入MySQL数据库的步骤时,Ansible会抱怨“python mysqldb模块是必需的”。 所以我用pip(来自Hombrew)安装它: pip install MySQL-python 。 重新运行后,我得到相同的错误信息。 cat /usr/local/bin/ansible-playbook是 #!/bin/bash PYTHONPATH="/usr/local/Cellar/ansible/1.4.4/libexec/lib/python2.7/site-packages" exec "/usr/local/Cellar/ansible/1.4.4/libexec/bin/ansible-playbook" "$@" 使用pip安装将软件包放置在“ /usr/local/lib/python2.7/site-packages ”中,但Ansible拥有自己的站点软件包文件夹,因此全局软件包不会影响Ansible所要求的内容。 安装到Ansible的网站包文件夹MySQL-python的最佳方式是什么?
看来Ansible Galaxy会理解它必须下载依赖关系(如果在meta / main.yml或requirements.yml文件中指定的话)。 有这个最好的做法吗?
我无法弄清楚这一点,因为我没有办法知道从可靠的方面得到“真实”的错误信息。 我跑下面 $ ansible -i /opt/ansible/ec2.py "tag_Function_app:&tag_Application_pro:&tag_Environment_pqa" –private-key=~/.ssh/id_root_rsa -m shell –sudo -a "service httpd restart" -u root 但最终会出现一个非常不起眼的错误 10.221.142.0 | FAILED | rc=0 >> MODULE FAILURE 究竟发生了什么? 有没有办法让我进一步debugging呢? 试图严格的SSH用户/ sshkey工作正常?
根据主机名复制文件的最佳方法是什么? 我需要将具有不同内容但具有相同文件名的文件复制到多台机器上。 我有几个文件: file.role1 file.role2 file.role3 根据主机名和/或angular色,我想复制file.roleX并将其重命名为file 谢谢。
有时我想使用Ansible的lineinfile或blockinfile模块将密码写入某个configuration文件。 如果我这样做,整个行或块,包括密码,结束了我的syslog 。 由于我不认为syslog是一个安全的地方存储我的密码,我怎么能告诉Ansible不要泄漏我的密码到syslog ? 我希望有办法做到这一点,否则我会认为这是Ansible的一个很大的安全问题。 您可以使用以下ad-hoc命令重现它: ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret' 这是什么在syslog结束: ansible-blockinfile: Invoked with directory_mode=None force=None remote_src=None insertafter=None owner=None follow=False marker=# {mark} ANSIBLE MANAGED BLOCK group=None insertbefore=None create=True setype=None content=None serole=None state=present dest=/tmp/ansible_password_leak selevel=None regexp=None validate=None src=None seuser=None delimiter=None mode=None backup=False block=Password = secret 例如,我使用的是Debian“Jessie”8系统上的Ansible Ubuntu […]
在ansible.cfg中设置这个variables非常简单,但是对于没有sftp的主机(以及最有可能的python)来说,这是很有意义的。 所以我有一个路由器组 – 是否有可能在group_vars中设置这个variables?