将用户添加到puppet中稍后的组中

时间:2018-03-16 20:54:22

标签: puppet

我在一个模块中有一个用户资源,它被几个不同的节点使用。现在我想将此用户添加到组中,但仅限于一个特定节点。对此有一个很好的解决方案吗?

模块看起来像这样:

<ContentPage.ToolbarItems>
    <ToolbarItem x:Name="SalvarItemIOS" Command="{Binding SalvarCommand}" Order="Primary" Priority="0">
        <ToolbarItem.Name>
            <OnPlatform x:TypeArguments="x:String">
                <On Platform="iOS" Value="Done"/>
            </OnPlatform>
        </ToolbarItem.Name>
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="Android" Value="ic_check"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
    <ToolbarItem x:Name="RemoveItemIOS" Command="{Binding RemoveCommand}" Order="Primary" Priority="1">
        <ToolbarItem.Name>
            <OnPlatform x:TypeArguments="x:String">
                <On Platform="iOS" Value="Trash"/>
            </OnPlatform>
        </ToolbarItem.Name>
        <ToolbarItem.Icon>
        <OnPlatform x:TypeArguments="FileImageSource">
            <On Platform="Android" Value="ic_delete"/>
        </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
</ContentPage.ToolbarItems>

节点清单:

class testmodule::basics {
  user { 'testuser':
    ensure     => present,
    home       => '/home/testuser',
    managehome => true,
  }
}

1 个答案:

答案 0 :(得分:1)

你有几种选择,分为几个一般类别。

类别1 - 使用外部数据来传达用户应具有的辅助组。特定数据可能是一个标志,用于指示用户是否应位于辅助组中,或者它可能是相应辅助组的实际数组。然后,您可以通过直接调用lookup()hiera()函数来获取它,具体取决于您使用的Puppet版本,或者为其创建类参数,以及使用自动数据绑定。

示例:

<强>模块/ testmodule /舱单/ basics.pp

class testmodule::basics($secondary_groups = []) {
  user { 'testuser':
    ensure     => present,
    home       => '/home/testuser',
    managehome => true,
    groups     => $secondary_groups
  }
}

数据/节点/ special.my.com.yaml

---
testmodule::basics::secondary_groups:
  - testgroup

类别2 - 设置类参数以接收区分数据,就像在类别1选项之一中一样,并通过外部节点提供数据分类器(ENC),而不是外部数据。设置和启用ENC比将数据提供给单个班级具有更广泛的意义,但是,除非您已经在使用或计划使用ENC,否则我不建议这样做。

类别3 - 在需要时执行资源参数覆盖。这可能几乎是对示例清单的一个简单更改,但最好将覆盖放在一个单独的类中,而不是直接在节点块中执行它。在来自inherits的{​​{1}}的类中,您可以使用资源参数覆盖语法,如下所示:

<强>模块/ testmodule /舱单/基础/ special.pp

testmodule::basics

但是,如果要在节点块或不相关的类中执行此类覆盖,则需要通过收集器执行此操作:

class testmodule::basics::special inherits testmodule::basics {
  User['testuser'] {
    groups     => 'testgroup'
  }
}

对于两种覆盖有一些超出可能使用范围的细微差别,因此请阅读the docs以获取更多信息。