Articles of ansible

被pipe节点上的sS SFTP子系统是否需要Ansible工作?

当我运行: ansible all -a "/bin/echo hello" -u myuser 我回头: mydomain.myhost.com | FAILED => failed to open a SFTP connection (Channel closed.) SFTP子系统在我试图连接的被pipe节点上被禁用。 受pipe节点上是否需要SFTP? Ansible文档没有具体提到SFTP: http ://docs.ansible.com/intro_installation.html#managed-node-requirements 我试图在ansible.cfg中设置这个值 : scp_if_ssh=True …但没有效果 (感谢弗雷德魔术奇迹狗的build议 。) 我也确保了我的非交互式shell不会像这里所说的那样产生任何输出。

Ansible – 尝试ping本地主机和远程服务器之间的连接

我是Ansible的初学者,我正在努力学习它。 我使用文档“ 入门指南” ,面对阻止我的问题。 我的问题依赖于当我试图使用下面的命令: sudo ansible all -m ping -vvvv 我得到了奇怪的错误,坦率地说,我不明白。 我试图了解谷歌这个消息,但这是一个相当困难的任务。 错误在下面。 [user@host ~]$ sudo ansible all -m ping -vvvv <MY_SUPER_HOST> ESTABLISH CONNECTION FOR USER: root <MY_SUPER_HOST> REMOTE_MODULE ping <MY_SUPER_HOST> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'StrictHostKeyChecking=no', '-o', 'Port=22', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'ConnectTimeout=10', […]

获取当前的主机名并将其推送到conf文件中

我正在研究一个可靠的手册,以获取服务器的当前主机名,然后将其设置为configuration文件。 我无法弄清楚如何使用lineinfile模块推送shell输出。 – name: Get hostname shell: echo $HOSTNAME register: result – name: Set hostname on conf file lineinfile: dest=/etc/teste/linux/zabbix_agentd.conf regexp="^Hostname=.*" insertafter="^# Hostname=" line=Hostname=????

从Ansible 2.0开始,格式策略如何?

我在github上看到了多个Ansible的例子, — # this might be in a file like handlers/handlers.yml – name: restart apache service: name=apache state=restarted Github的例子 以下示例包含作为name的注释。 # Make sure Jenkins starts, then configure Jenkins. – name: Ensure Jenkins is started and runs on startup. service: name=jenkins state=started enabled=yes 讨论 一个name就足够了,还是应该使用评论? 应该是: – name: Symlink RabbitMQ bin to sbin file: state=link src=/usr/lib/rabbitmq/bin […]

将parameter passing给无用的callback函数

我最近已经注意到存在可靠的callback,这似乎是在给定条件下修改某些默认值的一种方法。 然而,我已经search了一些有用的文档以及几本书,谷歌和源代码,但是对于我来说,我找不到这个简单问题的答案: 如何改变影响无用callback行为的configuration项? -Eg:出现邮件callback,查看代码,可以configuration为通过可configuration的SMTP主机将邮件发送到可configuration的电子邮件地址。 如何/何时/何时应该指定这些? 但是,如果邮件callback(和callback的基类)是任何事情,实际上似乎没有标准的configuration机制.. 例如,邮件从环境variables中获取SMTPHOST(如果存在),并且:显示为<root>(如果邮件程序坚持将[email protected]作为有效地址,则不起作用)。

通过ec2(请求密码)运行systemd作为默认用户的服务

我正在尝试使用以下Ansible脚本(playbook的一部分)来通过systemd为EC2(微)实例上的rails应用程序运行独angular兽: — – name: restart unicorn command: psql -h {{ db_host }} -U {{ db_user }} -d {{ db }} -c "SELECT true FROM pg_tables WHERE tablename = 'order_cycles';" register: table_exists ignore_errors: yes sudo: yes sudo_user: "{{ unicorn_user }}" notify: restart unicorn step 2 #TODO make sure both of these things run as one handler. […]

Ansible – 包括声明

我有这样的东西: … – name: Include TEST ENV tasks include: test_env.yml when: test_env tags: – test … 作为angular色的一部分。 事情是不符合我的预期。 只有当test_env == True时才会发生包含。 问题是,包括总是执行,但包含的任务被跳过 – 这是没有意义的(为什么其他原因,我需要它?)和输出变得冗长。 我做错了什么或者我滥用包括声明?

Ansibleangular色中的callback或挂钩以及可重用的一系列任务

我正在努力使我的Ansibleangular色有一定的可组合性和可重用性。 我有一个angular色执行几个系列的步骤。 根据应用于主机的其他angular色,其他angular色需要在每个步骤运行任务。 我正在使用PostgreSQL和PostgreSQL扩展pipe理,但为了简单起见,我们使用一个Web服务器和一些在其上运行的应用程序的例子。 angular色:web服务器 angular色:myapp angular色:myotherapp webserverangular色: 安装networking服务器 模板它的configuration build立它的数据库 启动networking服务器 myappangular色需要能够添加一些设置到web 服务器的数据库创build之前必须应用的configuration。 它还必须在Web服务器首次发布之前执行一些操作。 myotherappangular色还需要在首次运行之前将一些设置添加到Web服务器的configuration中,而不需要从myapp取消设置。 在Web服务器首次启动之后,它还必须执行一些操作,重新启动它,做更多的工作,然后重新启动它。 (这是人为devise的,但expression了我真正的用例的所有需求,而不会更多地介绍PostgreSQL内部的知识)。 我以为我应该能够使用这个处理程序。 webserver只是在每个相关的步骤都会触发notify ,所以其他angular色可以挂钩这些通知以追加到列表中,或者将密钥添加到用于configuration模板的散列中,激发他们自己的任务等。拥有一个可以通过myotherapp每次通知的myotherapp处理程序想要重新启动,而不必知道如何重新启动实际执行。 等等 然而: 如果有通知,处理程序必须存在。 Ansible不允许可选的处理程序。 如果有多个通知处理程序,Ansible只会select第一个处理程序,而忽略所有其他处理程序。 通知仅在游戏部分结束时触发。 你不能马上开火 有meta: flush_handlers但它刷新所有的处理程序,甚至是其他不相关的angular色和任务,可能不会期望他们的处理程序提前运行的处理程序。 追加到列表中,或者将密钥添加到字典中是非常困难的。 所以很难host_vars多个相关的angular色,而不需要手动将configuration与一些host_vars yml粘合在一起。 所以处理程序和通知似乎不是如何做到这一点。 一个人如何写出合理的任务和angular色? 我想用自行车轮子作为锤子吗? 你只是不打算以这种方式使用angular色? 这似乎与angular色的概念是一致的。 如果把Ansible的tasks / roles / vars / etc这个系统放在Python里面作为一个Ansible模块来编写,那么可以重复使用或者不完全是线性的呢? 如果是这样,是否有实际的方法来实现Ansible任务列表,variablesyml文件等模块的大部分大脑,并在模块中只有控制逻辑,所以模块不必重新编译,实施吨的东西? “PostgreSQL胆量”版本: postgres_serverangular色。 根据需要从发行版软件包或源代码安装Pg。 在defaults/main.yml中有许多variables可以被覆盖来控制行为。 提供工具来模拟PostgreSQLconfiguration,为postgresql.conf提供参数。 让调用者覆盖或预先添加到pg_hba.conf行。 initdb的PostgreSQL一旦安装。 一旦configuration就启动PostgreSQL。 知道如何启动,停止并重新启动postgres_server […]

Ansibleangular色发布任务

是否有可能在一个angular色中“发布任务”? 即angular色中定义的任务,将在游戏结束时运行? 例如,我有一个commonangular色,大多数其他angular色依赖于这个angular色。 commonangular色提供了一些基本的东西,以避免重复,如调整yumconfiguration等。 我注意到, 剧本有post_tasks 。 我想知道是否有可能在angular色本身定义职位任务? 更新:引用Ansible文档 : 处理程序:在更改上运行操作 … 这些“通知”操作是在剧本的每个任务结束时触发的,并且即使被多个不同的任务通知也只会被触发一次。 … angular色稍后介绍。 值得指出的是,处理程序是在“pre_tasks”,“roles”,“tasks”和“post_tasks”部分之间自动处理的。 … 显然,这部分文档或者是误导性的,或者是正确的谎言(=里面有错误)。 看来,处理程序是在每个播放结束时 , tasks和post_tasks之间被post_tasks ,因为下面的简单testing显示: – name: Handlers test hosts: all gather_facts: no roles: – some-role # some-role depends on common tasks: – name: This a task shell: /bin/true post_tasks: – name: This is a post task shell: […]

Ansible Playbook:确保一个进程正在集群的任何一个节点上运行?

Ansible可以很容易地确保每个主机上都运行一个进程。 我可以做这样的事情: — – hosts: app_cluster tasks: – name: Look for the "foo" process shell: ps -ef | grep foo | grep -v grep register: process_list changed_when: false – name: Start "foo" if needed shell: nohup /bin/foo & when: "process_list.stdout.find('foo') == -1" 但是,我需要在整个集群中只有一个特定进程的实例。 IE浏览器。 它可以在任何主机上运行,​​只要它在某处运行,只要群集中的任何地方只有一个这样的进程。 可能有一个方便的方法来做到这一点在一个合理的剧本?