首页 > 解决方案 > 成为具有与主机信息关联的密码的 sudoer 用户

问题描述

我需要访问一些使用服务器主机名构建密码的服务器,因此,假设主机名是:fancyHost,密码前缀是“principio”,那么 sudoer 用户(本例中为 contoso-r)的密码将是:“原则主机”。这是为了给每个主机分配一个新密码。

问题是我设法将自定义密码连接并稳定为变量,并扩展到 sudoer,但似乎 ansible become_pass 并不意味着在任务内部进行操作,这使得将前缀与主机名连接起来很困难。


   - hosts: test
     vars:
     prefix: "principio"
     ansible_become_pass: “hardToGuessPassword123”

     tasks:
     - name: getting current server hostname
     command: hostname
     register: hostname

     - name: getting current user name
     command: whoami
     register: current_username

     - name: print current server hostname
     debug:
       msg: "Current user: {{current_username.stdout}} |||  Hostname is: {{ hostname.stdout}} ||| Password should be: {{ prefix + hostname.stdout}}"

     - name: changing contoso-r' s  password
     become: True
     become_user: contoso-r
     become_method: su
     user:
       name: contoso-r
       password: "{{ (prefix + hostname.stdout) | password_hash('sha512') }}"
       state: present
       shell: /bin/bash
       system: no
       createhome: no

如何设置相对于每个主机的自定义密码而不是全局 become_pass 或 ansible_become_pass?

谢谢你的时间

标签: ansible

解决方案


你说:

我设法连接......并升级到sudoer,......

更改 contoso-r 的密码”时不必“成为用户:contoso-r ”。

- name: changing contoso-r' s  password
  user:
    name: contoso-r
    password: "{{ (prefix + hostname.stdout) | password_hash('sha512') }}"

推荐阅读