ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 管理用户的自定义文件 用户,与猫一样,常常觉得有必要标记他们的领地。 与猫不同,用户往往要定制自己的 shell 环境,如终端显示的颜色、别名等。 这通常是通过用户家目录下的一些以点开始的环境文件实现的,例如:.bash_profile。 通过修改上一节的 user::virtual::ssh_user 类,你可以将环境文件添加到基于 Puppet 的用户管理中。 在这个类中,你可以有选择地为客户提供 Puppet 文件仓库中的任何以点开头的文件。 #### 操作步骤 1. 对 user::virtual 类做如下修改: ``` class user::virtual { define user_dotfile( $username ) { file { "/home/${username}/.${name}": source => "puppet:///modules/user/${username}-${name}", owner => $username, group => $username, } } define ssh_user( $key, $dotfile = false ) { user { $name: ensure => present, managehome => true, } ssh_authorized_key { "${name}_key": key => $key, type => "ssh-rsa", user => $name, } if $dotfile { user_dotfile { $dotfile: username => $name, } } } @ssh_user { "john": key => "AAAAB3NzaC1yc2EAAAABIwAAAIEA3ATqENg +GWACa2BzeqTdGnJhNoBer8x6pfWkzNzeM8Zx7/2Tf2pl7kHdbsi TXEUawqzXZQtZzt/j3Oya+PZjcRpWNRzprSmd2UxEEPTqDw9LqY5S2B8 og/NyzWaIYPsKoatcgC7VgYHplcTbzEhGu8BsoEVBGYu3IRy5RkAcZik=", dotfile => [ "bashrc", "bash_profile" ], } } ``` 2. 使用如下内容创建 /etc/puppet/modules/user/files/john-bashrc 文件: ``` export PATH=$PATH:/var/lib/gems/1.8/bin ``` 3. 使用如下内容创建 /etc/puppet/modules/user/files/john-bash_profile 文件: ``` . ~/.bashrc ``` 4. 运行 Puppet。 #### 工作原理 我们添加了一个名为 user_dotfile 的 define。 对于用户要使用的每个 dotfile 都要调用这个 define 一次。 在本例中,john 用户有两个 dotfiles:.bashrc 和 .bash_profile。 其声明如下: ``` @ssh_user { "john": key => ... dotfile => [ "bashrc", "bash_profile" ], } ``` 你既可以指定一个 dotfile,也可以像本例那样指定一个数组形式的列表。 对于每个 dotfile,user_dotfile 将在 modules/user/files 目录下查找相应源的文件。 例如,对名为 bashrc 的 dotfile,Puppet 将查找: ``` modules/user/files/john-bashrc ``` 这将被拷贝为客户节点的如下文件: ``` /home/john/.bashrc ``` #### 参见本书 * 本章的 [使用虚拟资源管理用户](#ch06sec02) 一节