【问题标题】:ansible if else constructionansible if else 构造
【发布时间】:2022-01-07 23:52:24
【问题描述】:


最近开始熟悉ansible。
在这样的任务上把我踢向正确的方向。有必要使用 ansible 在 bash 上重复该脚本,该脚本依次处理多个 if else 循环,该脚本还使用执行命令的变量。
我应该使用哪个构造来重新创建if else 在 ansible playbook 中循环?
让我举个例子。
非常感谢您的帮助。

file1=$(cat /root/md_sum/00-system.conf.bak)
file2=$(cat /usr/lib/sysctl.d/00-system.conf)
file_time2=$(date -r /usr/lib/sysctl.d/00-system.conf)
date_audit2=$(date -r /usr/lib/sysctl.d/00-system.conf +%H:%M:%S)
audit_key=config_kernel_activ


#check audit
if [[ $(auditctl -l) = *"-w /usr/lib/sysctl.d/00-system.conf -p rwa"* ]];
then
echo "audit up"
else
echo "audit down";auditctl -w /usr/lib/sysctl.d/00-system.conf -p war -k $audit_key
fi


#check sum
if (ls -A /root/md_sum/00-system.md5);
then
echo "sum up"
else
echo "sum down";md5sum /usr/lib/sysctl.d/00-system.conf > /root/md_sum/00-system.md5
fi


#check bak file
if (ls -A /root/md_sum/00-system.conf.bak);
then
echo "bak files are present"
else
echo "bak files are not present";cp /usr/lib/sysctl.d/00-system.conf /root/md_sum/00-system.conf.bak
fi


#if sum was change/else compare
if [[ $(md5sum -c /root/md_sum/00-system.md5) = *OK* ]];
then
echo "files have not changed"
else
echo "files has changed "$file_time2;echo "CHANGES 00-system.conf ";comm -31 <(tr ' ' $'\n' <<< $file1 | sort) <(tr ' ' $'\n' <<< $file2 | sort);echo "more details ";ausearch -k $audit_key -i | grep $date_audit2 | grep "ouid"
fi

【问题讨论】:

  • 问题是什么?期望的输出是什么?请细化问题,以便我们正确回答。
  • 校验和命令中的条件看起来是不必要的复杂。为什么要创建子外壳?您可以使用if [[ -e /root/md_sum/00-system.md5 ]]; ... 达到相同的效果。
  • @KevinC 感谢您的回答。我需要 ansible 来做 bash 脚本所做的事情,不包括传递脚本或将其存储在服务器上。
  • @user1934428 感谢您的评论,我会考虑的!

标签: bash ansible


【解决方案1】:

Ansible 没有“其他”选项。它只知道“何时”条件。如果条件不匹配,Ansible 将忽略该任务。所以一个简单的例子是

- name: "Get state of file"
  stat:
    path: "/root/md_sum/00-system.conf.bak"
  register: file_state

- name: "File exists"
  debug:
    msg: "File exists"
  when:
    - "file_state.stat.exists"

- name: "File doesn't exist"
  debug:
    msg: "File doesn't exists"
  when:
    - "not file_state.stat.exists"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 2011-06-26
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    相关资源
    最近更新 更多