我有一个应该在指定的IP上配置的剧本,而不是连接到这个应用程序来配置里面的东西.
我遇到了一个问题:我需要在应用配置中更改任何内容后重新启动应用程序,如果我没有重新启动应用程序,则连接失败(没有连接,因为应用程序对新配置的新配置一无所知我'我试图访问).
我目前的剧本:
tasks:
- name: Configure app
template: src=app.conf.j2 dest=/etc/app.conf
notify: restart app
- name: Change data in app
configure_app: host={{new_ip}} data={{data}}
handlers:
- name: restart app
service: name=app state=restarted
Run Code Online (Sandbox Code Playgroud)
我需要强制处理程序configure_app在执行'更改应用程序中的数据'之前运行.
我正在使用Ansible来设置EC2实例并部署应用程序.有一个主机脚本,它收集标签相关的服务器和组信息.我想把这些动作作为一个单一的剧本来运行,所以
但是,如果在播放期间创建/更新了服务器,则提前加载库存,因此没有服务器/组数据.我可以1)单独提供和部署剧本2)使用add_host技巧在服务器更新时模拟动态库存,但这些方法存在缺陷.
我可以强制Ansible重新加载库存吗?我的测试文件是:
hosts脚本:
#!/bin/sh
echo `date` >> log.log
echo "{\"standalone\":[\"localhost\"]}"
Run Code Online (Sandbox Code Playgroud)
样品playbook.yml:
---
- hosts: all
tasks:
- name: show inventory_hostname
command: echo {{ inventory_hostname }}
Run Code Online (Sandbox Code Playgroud)
我运行它ansible-playbook -i hosts playbook.yml -v,看到两个运行:
$> cat log.log
Thu Mar 12 09:43:16 SAMT 2015
Thu Mar 12 09:43:16 SAMT 2015
Run Code Online (Sandbox Code Playgroud)
但是我还没有找到加倍它的命令.
在收集事实之前,有谁知道如何做某事(比如等待受管节点的端口/启动)?我知道我可以收集事实
gather_facts: no
Run Code Online (Sandbox Code Playgroud)
和THEN等港口,但如果我需要的事实,同时也还需要等待,直到节点启动时?
Ansible显示错误:
错误!任务中未检测到任何操作.这通常表示拼写错误的模块名称或模块路径不正确.
怎么了?
确切的记录是:
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
The error appears to have been in 'playbook.yml': line 10, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- name: My task name
^ here
Run Code Online (Sandbox Code Playgroud) 我一直在等ansible 2.3,因为它将引入encrypt_string功能.
不幸的是,我不确定如何读取加密的字符串.
我确实尝试过decrypt_string,解密(文件),查看(文件),但没有任何作用.
cat test.yml
---
test: !vault |
$ANSIBLE_VAULT;1.1;AES256
37366638363362303836383335623066343562666662386233306537333232396637346463376430
3664323265333036663736383837326263376637616466610a383430623562633235616531303861
66313432303063343230613665323930386138613334303839626131373033656463303736366166
6635346135636437360a313031376566303238303835353364313434363163343066363932346165
6136
Run Code Online (Sandbox Code Playgroud)
我打算的错误是 ERROR! input is not vault encrypted data for test.yml
如何解密字符串,以便我知道它的价值是什么而不需要运行游戏?
我遇到了问题并尝试调试它.我们购买了Verisign证书.当我们使用时:
openssl> s_client -connect myweb.com:443 -showcerts
Run Code Online (Sandbox Code Playgroud)
SSL握手永远不会完成,最后我们会看到错误:
Verify return code: 19 (self signed certificate in certificate chain)
Run Code Online (Sandbox Code Playgroud)
它显示3个---BEGIN/END CERTIFICATE---标签.链中的两个证书是Verisign签署的,但其中一个是自签名的.
如果有人可以解释这个自签名证书如何出现在CA签名证书中?
这个错误是否19 (self signed certificate in certificate chain)良性?如果没有,可能是什么原因造成的?
客户端在受信任存储中具有CA证书,但自签名证书没有任何内容.你认为这可能导致问题吗?如果是,我该怎么做:
我正在尝试在docker容器中安装mysql,尝试从github的各种图像,似乎他们都设法成功安装mysql但是当我尝试运行mysql时它给出了一个错误:
ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器
系统规格:
我到目前为止尝试的包:
我正在使用ansible 2.1.我有以下清单主机文件和一个需要访问主机文件变量的播放器调用的角色.有关如何访问它的任何想法(目前收到错误):
主机文件
[test1]
test-1 ansible_ssh_host=abc.def.ghi.jkl ansible_ssh_port=1212
[test2]
test2-1 ansible_ssh_host=abc.def.ghi.mno ansible_ssh_port=1212
[test3]
test3-1 ansible_ssh_host=abc.def.ghi.pqr ansible_ssh_port=1212
test3-2 ansible_ssh_host=abc.def.ghi.stu ansible_ssh_port=1212
[all:children]
test1
test2
test3
Run Code Online (Sandbox Code Playgroud)
角色 我试图访问在以下时尚的作用:
{{ hostvars.ansible_ssh_host }}
Run Code Online (Sandbox Code Playgroud)
&&
{{ hostvars.test1.ansible_ssh_host }}
Run Code Online (Sandbox Code Playgroud)
我试图访问test1部分中的ansible_ssh_host.
错误
fatal: [localhost]: FAILED! => {"failed": true, "msg": "'ansible.vars.hostvars.HostVars object' has no attribute 'ansible'"}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Ansible在我的VPS上安装Bundler.
我已经设置了rbenv,全局ruby是2.1.0.
如果我以root身份SSH到服务器并运行gem install bundler,它将完美安装.
我已经尝试了以下三种使用Ansible来安装Bundler gem的方法,并且这三种方法都没有产生任何错误,但是当我在SSH中运行时gem list,Bundler无处可见.
尝试1:
---
- name: Install Bundler
shell: gem install bundler
Run Code Online (Sandbox Code Playgroud)
尝试2:
---
- name: Install Bundler
shell: gem install bundler
Run Code Online (Sandbox Code Playgroud)
尝试3:
---
- name: Install Bundler
gem: name=bundler
state=latest
Run Code Online (Sandbox Code Playgroud)
我也尝试了最后的尝试,user_install=yes也user_install=no没有做任何改变.
有什么想法我怎么能通过Ansible正确安装Bundler?
我已经在这方面工作了一段时间,我安装了1个ruby版本:2.1.0和ahve发现rbenv的shims目录不包含垫片bundle.
应该有垫片bundle吗?我只是感到困惑,为什么capistrano无法找到bundle命令,因为它在我运行sudo gem list时列出但不是在我跑的时候gem list?
root@weepingangel:/usr/local/rbenv/shims# echo $PATH
/usr/local/rbenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@weepingangel:/usr/local/rbenv/shims# gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.0
- RUBY VERSION: 2.1.0 (2013-12-25 …Run Code Online (Sandbox Code Playgroud)