Проблемы с sudo в ansible для запуска sudo как определенного пользователя - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу запустить это в ansible:

chown $(id -u):$(id -g) $HOME/.kube/config

Цель состоит в том, чтобы chown vagrant:vagrant /home/vagrant/.kube/config.

Теперь я не могу сделать эту работу (я уже жестко закодированпуть для этого теста ($ HOME - это, конечно, /root для пользователя root):

Я пробовал:

- name: Setup local kubeconfig
  become: true
  shell:
    cmd: |
      chown $(id -u):$(id -g) /home/vagrant/.kube/config

В результате root:root (chown запускается от имени пользователя root)

Я также пытался

- name: Setup local kubeconfig
  become: true
  become_user: vagrant
  shell:
    cmd: |
      chown $(id -u):$(id -g) /home/vagrant/.kube/config

, что приводит к отказу в разрешении, потому что он подделывает

sudo -u vagrant chown $(id -u):$(id -g) /home/vagrant/.kube/config
chown: changing ownership of '/home/vagrant/.kube/config': Operation not permitted

Как я могу заставить эту работу?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Просто укажите пользователя vagrant в командах id:

- name: Setup local kubeconfig
  become: true
  become_user: root
  shell:
    cmd: |
      chown $(id -u vagrant):$(id -g vagrant) /home/vagrant/.kube/config

(Но почему вы не можете просто использовать chown vagrant:vagrant?)

0 голосов
/ 03 февраля 2019

вы можете использовать become_method: пользователь vagrant должен иметь разрешение sudo

- name: Setup local kubeconfig
  become: true
  become_user: vagrant
  become_method: sudo
  shell:
    cmd: |
      chown $(id -u):$(id -g) /home/vagrant/.kube/config
...