2016-09-15 49 views
0

注意:部分Puppet到Ansible迁移评估。 Ansible noob。覆盖Ansible事实类似于Puppet和Facter覆盖

CentOS 7返回operatingsystemrelease(puppet)或ansible_distribution_version(ansible)为7.2.1511而不是仅为7.2。所以在傀儡中我们使用下面的黑客。

# Hack for CentOS 7. operatingsystemrelease includes third part of release version eg 7.2.1511 
if [[ "$(facter operatingsystem)" == "CentOS" && "$(facter operatingsystemmajrelease)" == "7" ]] 
then 
    export FACTER_operatingsystemrelease=$(facter operatingsystemmajrelease).$(facter --json os | grep minor | awk '{ print $2 }' | tr '",' ' ' | sed -e 's/ //g') 
fi 

设置环境变量FACTER_operatingsystemrelease覆盖operatingsystemrelease值。这只需要CentOS 7发生。CentOS 6正常工作。

什么是在Ansible中进行这项工作的等效方法?

回答

0

您可以覆盖事实为其他变量:

set_fact: ansible_distribution_version="{{ ansible_distribution_version | regex_replace('7\.2\.\d+','7.2') }}" 
when: ansible_distribution == 'CentOS' 
+0

这需要在剧本下-tasks或主机来完成?对不起还在学习。 – MavWolverine

+0

在我测试的时候,我试着运行“ansible -m setup -i hosts -u centos -c local -extra-vars”ansible_distribution_version = 7.2“localhost”,但它仍然是7.2.1511。 – MavWolverine

+0

此外,有没有办法覆盖任何其他变量只有一个命令或一次运行? – MavWolverine