最初我使用makefile在linux中部署我的应用程序。我有各种sed命令来替换PHP上传文件大小、帖子大小、日志文件位置等变量。现在我正在转向ansible。我知道我可以复制文件,但我如何更改conf文件?就像我只想更改upload_filesize=50M参数一样。我不想复制整个conf文件,然后用我的文件替换。有时它只是一行的改变。有没有更好的方法来编辑ansible中的配置文件? 最佳答案 如果它是一个INI文件,那么ini_file模块(http://docs.ansible.com/ini_file_module.ht
Vagrant使用VirtualBox创建一个开发环境,然后使用ansible提供它。作为配置的一部分,ansible运行重启,然后等待SSH恢复。这按预期工作,但因为vagrant机器不是从“vagrantup”命令启动的,所以当盒子从重启中恢复时,同步文件夹没有正确安装。运行“vagrantreload”修复机器并再次挂载共享。有没有办法告诉vagrant重新加载服务器或执行手动重启后vagrant会做的所有事情?当SSH-ed进入vagrantbox时简单地运行“sudoreboot”也会产生同样的问题。 最佳答案 Vagra
您将如何使用Ansible确认服务是否在特定端口上运行?例如:Apache是否在端口80上运行?MySQL是否正在监听端口3912?Tomcat是否正在监听端口8080?我知道有service和wait_for命令,它们分别检查服务是否正在运行以及端口是否正在使用-但我没有找到到目前为止检查特定服务是否正在监听特定端口的任何内容。service和wait_for将指示有一个服务和一个端口,但不能保证该端口被该特定服务占用——它可能被任何东西占用。wait_for,据我理解,只是检查它是否被使用。wait_for上有一个regex_search参数,它提到在套接字连接中搜索特定字符串,但
我想提供子网中只能使用Linux跳转主机访问的Windows主机。Windows机器使用winrm连接方式。Linux跳转服务器可通过SSH访问。如果可以直接访问Windows主机,我没有问题:ansible_connection:winrm如果我尝试通过以下方式将任务委派给Linux跳转服务器(可以直接访问Windows):-name:Pingwindowshosts:windows_machinestasks:-name:pingwin_ping:delegate_to:"{{item}}"with_items:"{{groups['jump_servers'][0]}}"它尝试连
我正在通过Ansible执行shell命令。有时我没有完整的文件夹名称。假设我有目录名solr4.7.0。在shell中我可以输入cdsolr*。但是在ansible中我做不到:chdir=/var/solr*有什么解决方法吗? 最佳答案 没有。例如,command模块的chdir=参数不支持通配符。您可以使用registervariable完成您想要的事情存储ls命令的输出:-shell:ls-dsolr*register:dir_name-command:some_commandargs:chdir:"{{dir_name.st
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion目前我的所有部署脚本都在shell中,它安装并配置了大约10个程序。我认为shell是一个很棒的工具:模块化:每个脚本只有一个程序,这样我就可以将程序分散到不同的服务器上。简单:Shell脚本非常简单,不需要安装任何其他软件。一键式:我只需运行一次shell脚本,一切就绪。不可知论者:大多数程序员都能理解shell,不需要知道如何使用特定程序。版本控制:因为我的代码在GitHub上一个简单
在lineinfile模块,它取代整行。如果行很长,我必须再次重复整行。假设我想替换文件中的单个单词:#abc.confThisismyhorse这是剧本:-lineinfile:dest=abc.confstate=presentregexp='horse'line='Thisismydog'backup=yes有什么方法可以实现类似sed's/horse/dog/g'的东西吗? 最佳答案 新模块replace自1.6版本开始可用:-replace:dest=abc.confregexp='horse'replace='dog'b
我正在运行一个playbook,它定义了几个要通过apt安装的包:-name:Installutilitypackagescommontoallhostsapt:name:"{{item}}"state:presentautoclean:yeswith_items:-aptitude-jq-curl-git-core-at...我的系统最近的ansible更新现在呈现了关于上面的剧本的这条消息:[DEPRECATIONWARNING]:Invoking"apt"onlyoncewhileusingaloopviasquash_actionsisdeprecated.Insteadofu
应该有一些不错的方法来使用ansible来处理mysql数据库,例如将数据插入表或在mysqldb上运行的任何命令。我知道有一些模块可以创建数据库、管理复制、用户和变量:mysql_db-从远程主机添加或删除MySQL数据库。mysql_replication(E)-管理MySQL复制mysql_user-在MySQL数据库中添加或删除用户。mysql_variables-管理MySQL全局变量我的用例场景是,我在ubuntu上安装了mysql-server并成功创建了数据库,现在我必须将数据插入表中,想知道是否有办法实现它通过ansible。 最佳答案
我需要使用Ansible对我服务器上的所有现有MySQL数据库进行备份。我知道mysql_db模块。它逐个获取我想要操作的数据库的名称,因此我必须在使用该模块之前获取现有数据库的列表。有什么方法可以一次备份所有MySQL数据库或使用Ansible获取现有数据库的列表? 最佳答案 Apatchtoaddsname=allthatallowsausertodumporimportalldata最近合并到devel,1.9.1还没有,但是已经在thispart显示了的文档。#Dumpsalldatabasestohostname.sql-