ansible 判断mysql是否启动_获取ansible以从mysql和/或perl脚本中读取值

可能有更好的方法来完成我需要的东西。我首先给出背景,然后是我目前的(非工作)方法。

目标是使用ansible playbooks将一堆服务器从一个SLES 11迁移到SLES 12。问题是newserver和oldserver应该有相同的nfs挂载目录。这必须在剧本的开头完成,以便完成所有其他任务。正在创建的目录的名称可以通过两种方式确定 - 直接在旧服务器上或在旧服务器上的卷名称的mysql数据库查询中确定。新服务器名为migrate-(oldservername)。我试图提示ansible中的volumename,但那会对每个服务器应用相同的名称。目标回顾:必须从在旧服务器上创建的旧服务器确定目录名称。

方法1:我已经创建了一个perl脚本,ansible将复制到newserver,它将执行mysql查询,并创建dir本身。这有两个问题 - 1)需要在每台服务器上安装mysql-client。这对于这些服务器来说是完全不必要的,并且必须在运行查询后卸载。 2)复制文件和远程执行它们似乎是一种糟糕的方法。

方法2:创建上述版本,但在ansible控制机器上运行它(已安装mysql-client)并将值存储在文件中的key:value对中。问题 - 1)我无法弄清楚如何在perl脚本中确定Ansible正在运行的主机,并且必须手动将它们输入到perl脚本中。 2)我无法弄清楚如何让Ansible从创建的文件中正确导入这些值。

这是我的相关perl代码 -

$newserver = migrate-old.server.com

($mig, $oldhost) = split(/\-/, $newserver);

$volname=`mysql -u idm-ansible -p -s -N -e "select vol_name from assets.servers where hostname like '$oldhost'";`;

open(FH, ">vols.yml");

$values = $newhost{$volname};

print FH "$newhost:$volname\n";

close(FH);

我的Ansible代码遍布各地,因为我已经尝试并评论了很多东西。如果它有用,我可以在这里分享。

方法3:完全在Ansible中完成它基本上是一个mysql查询,用于遍历每个主机。问题 - 我完全不知道该怎么做。对ansible太熟悉了。我认为这是我宁愿尝试做的事情。

这里最好的方法是什么?如何将正确的值转换为ansible以创建正确的目录?

如果我能澄清任何事情,请告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值