我正在Ansible 1.6.6
用来配置我的机器。
我的剧本中有一个模板任务,它从 Jinja2 模板创建目标文件:
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf
Run Code Online (Sandbox Code Playgroud)
somefile.conf
如果它已经存在,我不想替换。Ansible 有可能吗?如果是这样,如何?
我正在使用 Ansible 来配置我的开发服务器。
我希望它始终为我启动一些服务。我有用于此目的的处理程序,但是无条件触发处理程序执行的最佳方法是什么,例如使其始终工作?
像这样的东西:
tasks:
- name: Trigger handler
run_handler: name=nginx-restart
Run Code Online (Sandbox Code Playgroud) 我通过以下方式加载了以下变量include_vars
:
access:
username-foo:
- path: /
permissions: rwX
recursive: true
username-bar:
- path: /
permissions: rX
- path: /css
permissions: rwX
recursive: true
- path: /data
permissions: rX
- path: /data/reviews.yml
permissions: rw
- path: /js
permissions: rX
- path: /js/*.js
permissions: rw
Run Code Online (Sandbox Code Playgroud)
我想将此信息提供给shell
命令以设置适当的权限。
我从这里尝试了一些技术:http : //docs.ansible.com/playbooks_loops.html 但未能提出有效的解决方案。
是否可以迭代这个结构?如果没有,我如何重新构建它以使其工作?是否可以在不违反 DRY 规则的情况下执行此操作(例如,将用户名包含在每条记录中)?
我们正在使用Vagrant和Ansible来配置VirtualBox机器。
这是伟大的工作,但最近我们已经开始遇到需要访问互联网,喜欢任务的一些奇怪的网络问题:apt-get update
,composer update
,gem install
等等,这些问题从不时冒出,他们是不稳定的。有时它无法连接到某些服务器或域名未解析。
有趣的是,当我通过 SSH ( vagrant ssh
)连接到盒子本身并手动发出此类命令时,例如sudo apt-get update; sudo apt-get dist-upgrade
- 它一直工作正常。
这是 NPM 的示例错误:
failed: [localhost] => {"cmd": "/usr/bin/npm install --global npm-check-updates", "failed": true, "rc": 1}
stderr: npm http GET https://registry.npmjs.org/npm-check-updates
npm http GET https://registry.npmjs.org/npm-check-updates
npm http GET https://registry.npmjs.org/npm-check-updates
npm ERR! network getaddrinfo ENOTFOUND
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network …
Run Code Online (Sandbox Code Playgroud) 我创建了一个目录,用于存储PHP 5 FPM套接字文件:sudo mkdir /var/run/php-fpm
。它由root:root
核心 PHP FPM 流程拥有。
当 PHP FPM 启动时,它会为此目录中的每个池创建套接字文件,nginx 使用它们进行通信。
但是,当我重新启动我的机器 ( sudo reboot
) 时,该目录在重新启动后消失了,并且 PHP FPM 无法启动,因为它无法在丢失的目录中创建套接字文件。
可能是什么问题?我该如何调试?
我正在使用最新的 Ubuntu Server 14.04。
我的 nginx 服务器有以下配置:
server {
listen 80 default_server;
server_name example.com www.example.com;
root /var/www/example.com/web;
index index.php index.html;
location / {
# try to serve file directly, fallback to rewrite
try_files $uri $uri/ @rewriteapp;
}
location @rewriteapp {
# rewrite all to index.php
rewrite ^(.*)$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下目录结构:
/var/www/example.com/:
当客户端点击:' example.com/dir/ ' 然后 …
我有一个想要调试的 GKE Kubernetes 集群。
是否可以使用ubuntu
图像和 SSH 等方式以完全权限启动集群内的容器,以便我能够在其中安装软件并apt
运行各种调试命令?
ansible ×4
nginx ×2
php-fpm ×2
ubuntu ×2
kubernetes ×1
networking ×1
php ×1
php5 ×1
socket ×1
vagrant ×1
virtualbox ×1
web-server ×1