Articles of ansible

Ansible库存

任何人都可以帮助我在Ansible库存variables? 我有一个服务器,通过ssh不允许rootlogin,我用普通用户(MYUSER)login服务器,然后su -成为root用户。 我有用户(MYUSER)SSH基于密钥的身份validation。 现在,我想执行下面的东西。 ansible –private-key /PATH/TO/PRIVATE/KEY.KEY -i INVENTORY -m shell -a "whoami" all 但是我得到输出作为MYUSER。 我想在用户MYUSER中使用我的ssh密钥login服务器,然后通过root用户在服务器上使用shell模块执行一些命令:注意:我有root用户密码来提供库存。 以下是我创build的广告资源。 (^ ^)我知道这是错的。 test-web.example.com ansible_ssh_host=XXXX ansible_ssh_user=MYUSER ansible_become_method=su ansible_become_user=root ansible_become_pass=Xjdt@mdaj12 执行: [root@server ansi]# ansible –private-key /root/MASTER/audit/key.key -i test -m shell -a "whoami" all test-web.example.com | SUCCESS | rc=0 >> MYUSER 我怎样才能做这个工作?

Ansible根据主机名填充一个variables

我GOOGLE了,但我无法find我想要做的解决scheme。 我想根据服务器的主机名设置一个jinja2variables(我正在使用不同的证书,并希望根据主机名创buildssl.conf )。 我想要一个字典来做这样的事情: Certmapping: host1: www.mydomain.com host2: beta.mydomain.com host3: partner.mydomain.com 然后是一个引用字典的模板: SSLCertificateFile /etc/pki/tls/certs/<domain>.crt 我可以有一个怪物: if {{ ansible_hostname }} == 'host1' … 但是看起来不那么优雅。

在Ansible中,使用stdlib进行inputvalidation的Puppet是什么?

问题 以下问题出现在安全客户端: {"timestamp":"2017-01-19T09:49:14.803754+0000","level":"fatal","message": "check name cannot contain spaces or special characters","object":{"handlers": ["mailer","sms"],"command":"check-ports.rb -p 234","interval":30,"standalone": true,"name":"port 234"}} 目前用户需要debuggingsensu-client日志logging才能发现问题,通过validationinput可以防止问题出现。 目标 为避免使用此angular色的用户使用包含空格或特殊字符的名称,例如: sensu_client_checks_metrics_common: – cmd: check-cpu – cmd: check-memory-percent – cmd: check-ntp – cmd: check-swap-percent handlers: – mailer – cmd: metrics-cpu handlers: – relay – cmd: metrics-memory-percent handlers: – relay – cmd: metrics-disk handlers: – relay – cmd: […]

无法通过ad-hoc命令pingstream浪汉

我现在在用stream浪汉 我可以从本地terminalping虚拟机。 我想用ping命令来监视那个stream浪的虚拟机: $ ansible 192.168.33.101 -m ping -u root 但有错误: 192.168.33.101 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).\r\n", "unreachable": true } 我在/etc/ansible/hosts文件中添加了IP: 192.168.33.101 本地和虚拟机都安装了ssh。 那么为什么不能到达?

Ansible从CSV创build用户

我刚开始使用Ansible。 在使用Ansiblepipe理多个用户帐户时是否有最佳做法? (例如:创build,禁用和删除用户帐户)。 我认为,从csv文件pipe理帐户会更早。 我一直没有find任何参考或例子。 我在下面创build了以下testing。 但是为了可用性,似乎对csv文件运行这个会更容易,而且不必每次都编辑yml文件。 – hosts: servers remote_user: root tasks: – name: adding several users user: name={{ item.name }} state=present comment={{ item.comment }} password=$1$*)^%$CeUUJM&v#0pQhHjqjpqX1 update_password=on_create createhome=yes groups={{ item.groups }} with_items: – { name: 'testuser3', comment: 'testuser3', groups: 'wheel' } – { name: 'testuser4', comment: 'testuser4', groups: 'users' } 感谢您的帮助。

Ansible只是挂起

我所做的大部分工作都是按照我想要的方式进行的。 然后,我不知道这是怎么发生的。 我的Ansible剧本都不会连接到远程系统(It Just Hangs)。 我可以通过任何帐号在命令行中使用SSH进入SSH。 以下是Ansible Pingtesting。 我的本地主机是好的,剧本将执行。 但是,而不是我的远程系统。 我已经去除所有帐户,创build新的密钥,并重新安装Ansible ansible.cfg目前处于默认设置(这是没有启用的),我已经清除了〜/ .ansible中的所有内容 **Remote System** [root@SELC01 ~]# ansible -vvv servers -m ping -u root –ask-pass -K Using /etc/ansible/ansible.cfg as config file SSH password: SUDO password[defaults to SSH password]: META: ran handlers Using module file /usr/lib/python2.7/site-packages/ansible/modules/system /ping.py <10.6.16.106> ESTABLISH SSH CONNECTION FOR USER: root <10.6.16.106> SSH: […]

Ansible匹配并使用正则expression式更改bash提示符

我想从中更改bash命令提示string PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 至 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 具体来说,它将颜色从绿色变为红色,更改为32到31。 我想更改文件,而不是部署/复制在一个完整的文件。 我想通过文件search,并更改线,如果它匹配的任何情况。 我试着逃避所有的特殊字符,但YAML正则expression式抱怨\和各种字符。

Ansible – jenkins插件在Google Container Engine(GKE)上失败 – 与入口无限循环

我有这样的configuration为ansible: – hosts: localhost connection: local tasks: – name: Jenkins – add job jenkins_job: config: "{{ lookup('file', 'jenkins_conf/pipeline_staging.xml') }}" name: deploy-staging password: XXXXX url: https://jenkins.url.com user: someuser 但是当我尝试开始这个剧本我得到: 致命的:[localhost]:失败! => {“changed”:false,“failed”:true,“msg”:“无法validation作业是否存在,HTTP错误302:HTTP服务器返回redirect错误,导致无限循环。\ n最后30x错误信息是:\ nfindhttps://jenkins.url.com “}重试,使用:–limit @ / home / holo / project / sources / devops / orchiestration / environment-cloud / ansible-playbook / jenkins。重试 我究竟做错了什么?

如何在启动EC2实例时等待user_data脚本运行?

我正在使用Ansible来启动和configuration当前没有安装Python的AMI(ubuntu / images / hvm-ssd / ubuntu-xenial-16.04-amd64-server-20161020(ami-40d28157))的EC2实例从开始。 由于大多数可用的模块需要远程计算机上的python才能工作,而不是select使用不同的AMI,所以我尝试使用user_data脚本在启动的实例上安装python。 它有点工作(正确安装Python),但是在user_data脚本运行完成之前 , ec2任务将返回,所以下面的任务(实际上将configuration实例的任务)会失败,并显示错误'/bin/sh: 1: /usr/bin/python: not found\r\n' 由于没有python我甚至不能运行远程主机上的大多数任务,我不能简单地检查/usr/bin/python或标记文件是否存在,或者检查syslog输出。 我想在user_data脚本的末尾添加一个nc -l $SOME_PORT ,并用wait_for模块检查它,但是对我来说这听起来像是太过分了。 有没有办法使用ec2模块启动一个实例,以便它等到user_data脚本完成运行? 以供参考: 类似于我正在使用的剧本: – name: Create the EC2 instance hosts: localhost gather_facts: false vars: name: myinstance ami: ami-40d28157 #Other vars ommited for brevity tasks: – name: Launch Instance ec2: key_name: "{{ keypair }}" group: "{{ […]

有没有办法来检查一个字典键没有定义在一个任务?

所以在我的代码中我有一个任务 – name: cool task shell: 'touch iamnotcool.txt' when: me.cool is not defined 而且我的变种看起来像 — me: stumped: yes 所以当我运行这个任务时,会返回以下错误 {"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.