Articles of ansible

通过伪ttyterminal的SSH和sudo

我正在尝试克服我们环境中的一些限制,为无密码的ssh密钥写一个授权的SSH文件。 我需要执行ssh作为目标系统,然后运行“ sudo su – ,然后使用密钥更新服务帐户authorized_keys” 这最终必须上我的可靠的脚本。 我正在使用“ ssh -t user@target ” sudo su – service-user “ – 这实际上让我成为一个服务用户的shell,但我无法想出一个方法来传递文件修改命令以上。 任何提示或替代select? 注意:我需要使用“ ssh -t ”选项,因为目标系统上没有设置requiretty。 干杯!

Ansible'错误! 目标主机丢失

我想在OS X上使用Ansible 2.1.1.0来获得一些非常基本的东西。 我的目标都是Ubuntu 16.04,所以我要做的第一件事就是安装python2.7,因为即使是“ping”也不行。 我有一个在servers上这样设置的清单: [dbservers] 192.168.xx set_hostname=db [webservers] [servers:children] dbservers webservers 这是我在init.yml中的init.yml : — – hosts: servers gather_facts: False become: yes tasks: – name: apt-get update raw: /usr/bin/apt-get update -qq – name: Install python 2.7 raw: test -e /usr/bin/python || /usr/bin/apt-get install -q -y python2.7 python-simplejson 我检查它是通过指定dbservers组来select正确的主机,这是servers一个子集(反正只有一个),这对我来说是正确的: # ansible dbservers -i servers –list-hosts […]

在Ansible中,Puppet高pipe的所有者是什么?

Ansible版本 user@server:/home$ ansible –version ansible 2.1.1.0 在木偶: exec { 'run gulp as www-data': command => '/usr/local/lib/npm/bin/gulp' cwd => '/var/www' user => 'www-data' } 这也适用于: sudo -u www-data /usr/local/lib/npm/bin/gulp 但当 – command: /usr/local/lib/npm/bin/gulp args: chdir: "{{ project_dir }}" become: www-data 被使用在可靠的,它导致: FAILED! => {"changed": true, "cmd": ["/usr/local/lib/npm/bin/gulp"], "delta": "0:00:00.631959", "end": "2016-09-15 09:57:41.167507", … 如果 – command: […]

主机中的Ansible双循环

我想遍历特定组的所有主机的variables。 在hostvars中使用以下数据(简化): { "server1": { "group_names": ["web"], "sites": { "website1": { "id": "site1", "domain": "…" } "website2": { "id": "site2", "domain": "…" } }, } "server2": { "group_names": ["web"], "sites": { "website3": { "id": "site3", "domain": "…" } } } } 我想在第三台服务器(数据库服务器)上创build所有的数据库: – name: create databases – mysql_db: name: "{{ item.1.id }}" – with_subelements: – […]

公共ssh id在id_rsa.pub上不同于ansible_ssh_host_key_rsa_public

我想做一个无密码的SSHlogin到另一台Linux服务器,我想做安装使用ansible 你能告诉我为什么 ~/.ssh/id_rsa.pub hostvars[item]['ansible_ssh_host_key_rsa_public'] 是不同的 ? 以下是作为例子的任务: – debug: msg="ssh-rsa {{ hostvars[item]['ansible_ssh_host_key_rsa_public'] }} {{ hostvars[item]['ansible_user_id'] }}@{{ hostvars[item]['ansible_hostname'] }}" with_items: "{{ groups.pmacct }}" when: inventory_hostname in groups.ipacc – meta: end_play

为什么不能在stream浪汉的服务器上为我的404页面服务?

我在/404/index.html有一个404页面的静态HTML网站。 stream浪者映射端口80到9000,所以我访问我的网站在http://localhost:9000 。 该网站是可浏览的,但如果我试图强制404错误,我看到/index.html而不是。 我已经尝试了一大堆教程,但总是会显示索引页面。 如果我做vagrant ssh我有相同的经验。 唯一的区别是我可以curl http://localhost/404/并查看404页面的内容。 Ansible在configuration期间扩展了{{ }}模板项目的值。 默认(网站模板) server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root {{ web_root }}; index index.html index.htm; # Make site accessible from `http://localhost/` server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to […]

Ansible没有条件检查angular色。 什么是合适的?

我正在试图做一个脚本的高级版本,在那里根据“何时”的条件运行一个angular色。 在我的情况下,以root身份进行连接,创buildansible_bot用户,授予他特权并拒绝对根的访问。 这一切都在第一次运行,但它不能在第二次运行,因为ansible无法连接作为第一步的根。 我试图通过使用下面的逻辑省略这一步,但它返回一个错误“评估条件时:错误:root_connection.rc == 0”。 – hosts: ansible-test gather_facts: false vars: – ansible_ssh_user: "{{ initial_ssh_user }}" tasks: – name: Test SSH connection for {{ initial_ssh_user }} local_action: shell ssh {{ initial_ssh_user }}@{{ inventory_hostname }} exit register: root_connection ignore_errors: True roles: – { role: add-ansible-bot, when: root_connection.rc == 0 } – hosts: ansible-test sudo: yes […]

Ansible,Vagrant,sudo和ssh-agent

所以我已经看到了这个问题 ,并将Defaults env_keep+=SSH_AUTH_SOCK到我的/etc/sudoers文件中,但是仍然无法使用sudo: true和sudo_user: <user>在我的ansible playbook中从我的Vagrant框中的github克隆。 我想克隆代码作为我创build的用户来运行它,但它被certificate是非常令人沮丧的。 当我通过vagrant sshlogin时,我可以做ssh [email protected] ,但是当我做sudo -u <user> ssh [email protected]我得到Permission Denied错误。 当我回显SSH_AUTH_SOCK值作为特定的用户,我看到它被设置: vagrant@vagrant-ubuntu-trusty-64:/tmp$ sudo -u derp echo $SSH_AUTH_SOCK /tmp/ssh-w3XYbqlMnX/agent.1592

如何检查两个文件是否在相同的主机上完全相同?

我使用Ansible来pipe理节点,我想检查我的节点上的时区。 我发现在centos上,我应该根据/ usr / share / zoneinfo / {{timezone}}文件replace/ etc / localtime。 我在我的剧本中写下了这个任务: – name: sync timezone file if different command: "rsync –itemize-changes –checksum –copy-links /usr/share/zoneinfo/{{ timezone }} /etc/localtime" 哪个工作。 我的目标是仅在必要时执行操作,所以在本地时间将仅在发生更改时才会写入。 但我的问题是,我也想用Ansible来检查我的节点上的任何更改。 而且,当执行一个命令时,即使没有改变,它总是在报告中被标记为“改变= 1”。 我尝试使用一个合理的文件模块,但不pipe是将本地或远程复制到远程,还是远程复制到远程。 我也尝试使用这个任务的注册选项检查: – name: Copy timezone {{ timezone }} to /etc/localtime shell: "[[ $(md5sum /usr/share/zoneinfo/Europe/Paris | cut -d' ' -f1) = […]

在单行上find模式?

我怎么能这样做: – find: paths: "/etc/ssl/" recurse: yes patterns: – "*.pem" – "*.crt" 在一条线上? 该文档提出了一些事情: – find: paths="/etc/ssl/" recurse=yes patterns="'*.pem','*.crt'" 但是这与前面的命令不匹配,