Articles of ansible

msg:ConnectionError(ProtocolError('Connection aborted。',error(2,'No such file or directory')),)

我在TASK: nginx container上得到一个错误TASK: nginx container : failed: [localhost] => {"changed": false, "failed": true} msg: ConnectionError(ProtocolError('Connection aborted.', error(2, 'No such file or directory')),) FATAL: all hosts have already failed — aborting 当玩下一个Ansible剧本: — – name: Play hosts: localhost vars: [] tasks: – name: nginx container docker: name: my.nginx2 image: nginx state: started 我做错了什么? 这是一个错误? PS用-vvvv得到更详细的输出是: <localhost> […]

是一个优雅的重载幂等的安全吗?

我们现在正在调查Ansible来configuration我们的服务器。 这是一个相当默认的nginx,php-fpm和mysql的设置。 但是,我想知道如何安装这些软件包,以及如何使运行中的服务具有幂等性。 对于nginx,我们有一个默认的nginx.conf和conf.d/一些文件。 对于php,我们有一个php.ini ,一个php-fpm.conf ,一个在pool.d/的池和一些在conf.d/ ini文件。 覆盖每个正确的剧本通话中的所有文件是否是这个想法? 如果所有的configuration都被覆盖,那么即使服务器负载很重时,是否可以做一个service nginx reload和service php5-fpm reload加载? 对于初始安装, reload不会启动服务器,所以我必须先检查状态,并基于此,在start和reload之间切换? 如果我用nginx安装寻找剧本,他们通常会使用处理程序来重新启动nginx。 但是,这并不优雅,所以我不太喜欢这种方法: service: name=nginx state=restarted 一般来说, 使用 nginx,php-fpm和mysql等服务而不强制重新启动的 服务器和服务器的常见模式 是什么?

Ansible Playbook运行Shell命令

我最近在我的一台服务器上安装了Ansible,发现它非常有趣,而且省时。 我正在运行一个Ubuntu专用服务器,并已经configuration了多个用Python编写的Web应用程序,还有一些用PHP编写的。 对于Python,我使用uwsgi作为HTTP网关。 我写了shell脚本来启动/重新启动几个进程,以运行特定的Web应用程序的实例。 我每次必须做的是连接ssh并导航到特定的应用程序并运行脚本。 我需要的 我一直在试图find一种方法来编写Ansible的手册,以完成从我的个人计算机执行所有命令,但我不知道如何做到这一点。 我还没有find一个非常有说服力的(对于初学者)文档或在互联网上的帮助。 题 如何用Ansible playbook重新启动Nginx? 我怎样才能杀死进程ID的进程?

如何在包含模板variables的数组上循环遍历?

我正在使用Ansible为Web服务器设置自动configuration过程。 为此,我有一个包含虚拟主机的字典的数组来设置: vhosts: – name: 'vhost1' server_name: 'domain1.com' – name: 'vhost2' server_name: 'domain2.com' 我准备了一些通用的nginx虚拟主机configuration模板: server { listen 80; server_name {{ item.server_name }}; root /home/www/{{ item.name }}/htdocs; index index.php; location / { try_files $uri $uri/ /index.php?$args; } } 最后,我使用以下任务将准备好的模板复制到目标主机: – name: Setup vhosts template: src=vhost.j2 dest=/etc/nginx/sites-available/{{ item.name }} with_items: vhosts 这些任务按预期遍历vhostvariables。 不幸的是,Ansible不会将迭代器中的当前项传递给模板,而是模板可以访问所有当前有效的variables。 有什么办法将当前项目从迭代器传递到模板?

尝试从内部通过屏幕启动一个进程

我有一个有点怪异,可重复,但无法解释的问题与screen 。 我使用ansible / vagrant为我的公司构build了一个一致的开发环境,作为一个略显华丽的点睛之笔,它启动了在screen会话中运行的dev服务器,所以前端开发人员不需要打扰login并手动启动进程,但后端开发者可以login并进行控制。 然而,其中一个系统 – 尽pipe是从头开始构build – 最终会立即死屏(它不logging任何东西到屏幕日志)。 手动运行命令可以正常工作。 (命令正在) screen -L -d -m bash -c /home/vagrant/run_screen_server.sh 我甚至已经在系统上关注了与vagrant / virtualbox有关的所有事情,确保它安装了一个干净的夜间盒子。 完全相同的源代码盒适用于所有其他机器。 有没有其他的debugging步骤,我可以采取还是有什么我失踪?

来自任务的可变呼叫处理程序

我想为pipe理员创build一个conf文件,并在创build文件后由pipe理员用一个处理程序“重读”。 我的任务: – name: add supervised conf sudo: yes template: src=default.conf.j2 dest="/etc/supervisor/conf.d/{{item.name}}.conf" with_items: "{{supervisorConfs}}" notify: – task with variable 我的经理: – name: task with variable debug: "{{item}}" 任何想法如何可以做到?

用Ansible在Linux上安装Swift 3 + libdispatch

我努力在Ubuntu 16.04上安装Swift 3.0和GCD。 这应该是现在可能的吧? 下面是从swift.org下载Swift 3的一个Ansible任务,从GitHub克隆,构build和安装swift-corelibs-libdispatch。 即使安装libdispatch完成没有错误,它不起作用。 当我尝试在Swift repl中import Dispatch时,它会抱怨缺lessfunction“块”。 检查Makefiles确认,至lessflag -fblocks被提供给编译器。 以下是Swift repl的输出示例: vagrant@swift3:/tmp/swift-3.0-PREVIEW-3-ubuntu15.10/usr/bin$ ./swift Welcome to Swift version 3.0 (swift-3.0-PREVIEW-3). Type :help for assistance. 1> 6 * 7 $R0: Int = 42 2> import Dispatch error: module 'CDispatch' requires feature 'blocks' error: could not build Objective-C module 'CDispatch' 2> 用于设置框的Vagrantfile: # -*- mode: […]

如何用Linux风格的结尾replaceWindows风格的CR / LF行尾?

我在我的任务中尝试过,但似乎没有工作 – name: Fix line endings from CRLF to LF local_action: replace dest={{my_dir}}/conf/{{item}} regexp='\r\n' replace='\n' 我通常这样使用sed如下,它的工作原理 sed -i 's/\r//g' file 我想避免使用shell模块来做这个replace,因为它会引发一个警告

如何创buildAnsible playbook来获取远程主机的操作系统版本?

我是新来的人。 我有一个要求,要求我为AWS中托pipe的450多个Linux服务器提供操作系统版本。 AWS不提供此function,而是build议我们从木偶或厨师那里获得。 我创build了几个不运行的简单的手册 — – hosts: testmachine user: ec2-user sudo: yes tasks: – name: Update all packages to latest yum: name=* state=latest task: – name: obtain OS version shell: Redhat-release playbook应该输出一个带有主机名和操作系统版本的文本文件。 任何有关这方面的见解将不胜感激。

无法findsdkmanager.jar

系统configuration:Ubuntu 14.04 1.9.3 下面是main.yml文件 — – hosts: 127.0.0.1 connection: local sudo: yes tasks: – name: "Install packages to install android sdk" with_items: – libgl1-mesa-dev:i386 apt: "name={{ item }} state=installed" sudo: yes – name: "Install Java" with_items: – default-jre – default-jdk – openjdk-7-jre – openjdk-7-jdk apt: "name={{ item }} state=installed" sudo: yes – name: "Download sdk […]