Articles of ansible

应该不是anaught-playbook -e“sudo = no”覆盖sudo:在我的playbook中是否正确?

当我使用非sudo用户进行身份validation时,我想覆盖playbook sudo。 — name: test hosts: foo sudo: yes 如果我做: ansible-playbook test.yml -e "sudo=no" 它没有得到适当的覆盖,而是我必须从我的手册中删除sudo: yes 。 不应该sudo=no工作?

可以将任何可靠的任务用作依赖关系吗?

我目前有三项非常的任务: 创build虚拟主机 testingconfiguration 重新加载nginx 我现在注册了最后两个作为处理程序,但是对于我正在做的事情,正确的错误通知是错误的: 创build虚拟主机,通知testingconfiguration(好的) testingconfiguration,通知重新加载(为什么configurationtesting意味着重新加载) 重新加载nginx 我想要一个像这样的结构: 创build虚拟主机,通知nginx重新加载 nginx重载:需要configurationtesting configurationtesting:成功 nginx重新加载 只是因为语义看起来更正确。 它不应该只是一个序列,也不应该像一个configurationtesting通知一个重新加载,因为这只是实现一个序列没有逻辑落后(如重新加载需要先testing)

Ansible known_hosts任务失败

我是新的ansible,我创build了一个小型的剧本,在每个服务器中添加github ssh主机密钥给known_hosts: — – hosts: all tasks: – name: Add github to ssh known-hosts known_hosts: name: "TS_github" key: "github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" 但是,由于某些原因,这个剧本对于每个主机都有错误: fatal: [clusterapp-1]: FAILED! => {"changed": false, "cmd": "/usr/bin/ssh-keygen -F TS_github -f /tmp/tmpgROT5p", "failed": true, "msg": "", "rc": 1, "stderr": "", "stdout": "", "stdout_lines": []} 由于某些原因,它使用/tmp/tmpgROT5p作为密钥文件,由于显而易见的原因,这是错误的。 正如文档中所述,known_hosts模块应该使用“(homedir)+ /。ssh / known_hosts”,但不会发生。 我开始玩的手册如下: ansible-playbook -i hosts […]

Ansible主机“无法访问”:是

我刚开始学习Ansible的基础知识。 并通过SSH面临与服务器连接有关的一些问题。 我创build了一个名为publich_html的文件夹,并将我的代码放入该文件夹并更改权限 。 当我尝试执行我的剧本时,它给我以下错误 UNREACHABLE! =“{”changed“:false,”msg“:”SSH错误:无法将数据发送到远程主机,确保该主机可以通过ssh访问“,”无法访问“ 而当我尝试从用户家庭或root用户ping服务器,而不进入一个目录,它ping完美。 这里是详细的输出: SSH:EXEC sshpass -d15 sftp -b – -C -vvv -o ForwardAgent = yes -o StrictHostKeyChecking = no -o User = root -o ConnectTimeout = 10 configuration文件是: [default] host_key_checking = False 我不知道我失去了什么。 任何人有任何想法呢?

我如何检查Ansible的软件版本?

我有三个Linux服务器,我创build了可靠的库存文件: [web] 192.168.0.155 192.168.0.165 192.168.0.175 我有playbook.yml: — – hosts: web tasks: – name: Check drinks versions shell: "python3.4 {{ item.sw_path }} -v" sudo: yes with_items: – { sw_path: '/home/beer.py' } – { sw_path: '/home/vodka.py' } – { sw_path: '/home/whisky.py' } 脚本(beer.py,vodka.py和whisky.py)以如下格式打印其版本:“/home/beer.py 1.0.0”。 我需要得到这个版本,比较它与我存储在数据库中的版本(这是实际版本),如果版本不相等,然后从svn(也存储在数据库中的svnpath)复制实际版本到服务器。 我该如何使用可靠的function呢?

Ansible为每个主机的文件的最佳做法

我需要为每个主机有一个不同的文件,最好的地方在哪里存储? 将它存储在files夹下host_varspath存储在host_vars下是否被认为是好的做法?

不能在EC2主机上运行Ansible playbook

我正在尝试针对已经configuration好的EC2主机运行一个简单的Ansible操作手册。 当我运行剧本时,出现以下错误: SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh 使用亚马逊提供的.pem文件,我可以手动ssh到框中,只要做 ssh ubuntu @ my_instance_ip 。 这是我正在运行的完整命令: ansible-playbook –inventory-file=inventory/production –extra-vars=ansible_ssh_user=ubuntu my-playbook.yml -vvvv 这是我的库存文件(IP / DNS掩码): [test] ec2-1-1-1-1.us-west-1.compute.amazonaws.com ansible_ssh_private_key_file=~/path_to_pem_file.pem 有意思的是,如果我运行saps命令,这个命令剧本就是一口气吐出来的: ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60m -o ControlPath="/Users/me/.ansible/cp/ansible-ssh-%h-%p-%r" -o IdentityFile="/path_to_my_pem_file.pem" -o KbdInteractiveAuthentication=no -o […]

用variablesreplace正则expression式

我正在尝试replacestring中的localhost $amp_conf['AMPDBHOST'] = 'localhost'; variables{{ asterisk_db_host }}内容是172.17.0.3 。 即使 – replace: dest: /usr/src/freepbx/installlib/installcommand.class.php regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)' replace: '\1\2' 完美的结果 $amp_conf['AMPDBHOST'] = 'localhost'; – replace: dest: /usr/src/freepbx/installlib/installcommand.class.php regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)' replace: '\1{{ asterisk_db_host }}\2' 以及 – replace: dest: /usr/src/freepbx/installlib/installcommand.class.php regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)' replace: '\1{{ asterisk_db_host|regex_escape() }}\2' 用O2.17.0.2';replacestringO2.17.0.2'; 或O2\.17\.0\.2'; 。 我在这里做错了什么? 我怎样才能正确地做这个replace?

host_vars不能正常工作

我需要使用host_vars在我的host_vars文件安装在远程主机上的包,我试图从host_vars目录名称package拉动一个variables,其中一个文件ansi2驻留这是远程机器的主机名,我的名字主yaml文件是service.yml并驻留在/etc/ansible …. — – hosts: all become: yes ignore_errors: yes gather_facts: no tasks: – name: install vim yum: name={{ package }} state=present Dir结构: [root@ansi1 ansible]# pwd /etc/ansible [root@ansi1 ansible]# [root@ansi1 ansible]# ls -l ansi2/host_vars/ total 4 -rw-r–r– 1 root root 19 Jun 13 08:15 ansi2 [root@ansi1 ansible]# [root@ansi1 ansible]# cat ansi2/host_vars/ansi2 — package: "vim" 错误: […]

Ansibleangular色包括

我有一个可以被多个angular色使用的任务。 我将它添加到lib / mycommontask.yml 在我的angular色/我的项目/任务/ main.yml playbook我有: — – include: lib/mycommontask.yml vars: project: my-project version: "{{ version }}" – name: … 当我运行任务时,我收到以下错误 ERROR: Syntax Error while loading YAML script, /home/lg/src/devops/deploy/roles/my-porject/tasks/main.yml Note: The error may actually appear before this position: line 2, column 10 — – include: lib/mycommontask.yml ^ 我可以包含angular色任务吗? 我该怎么做?