如何在一个单一的剧本成为根以及应用程序用户



我需要设置一个应用程序,为此我需要以root身份安装Nginx,然后以不同的应用程序用户身份运行另一个Java应用程序。

这样做的条件是,我有一个特权用户";priva_suer";它有sudo,我作为这个用户运行剧本,因为我需要安装和配置Nginx。但是我的应用程序用户与这个用户不同;app_user";这是非特权的仅应用程序用户。

我面临的问题是,这个app_user需要密码才能成为app_user。所以在我的情况下,我需要两个密码,一个是成为root,另一个是变成app_user。

我提到了理解特权升级:成为我能找到的唯一选项是">ansible_become_password";。

有人能帮我吗?

我认为权限提升会有所帮助。我的解决方案是:

  • 为运行Java应用程序的服务器和要安装Nginx的服务器声明不同的组。在您的情况下,这两个组可以共享相同的服务器。

    下面我举一个inventory.yml文件的例子:

all:
children:
app:
hosts:
127.0.0.1:
vars:
ansible_become_pass: app_user@123
ansible_python_interpreter: /usr/bin/python3
ansible_user: app_user
nginx:
hosts:
127.0.0.1:
vars:
ansible_become_pass: root@123
ansible_python_interpreter: /usr/bin/python3
ansible_user: root
  • 剧本示例如下:
- hosts: app
tasks:
- name: Install Java app
become: yes
- hosts: nginx
tasks:
- name: Install NGINX
become: yes
  • 最后,使用-i选项提供的清单运行您的ansible剧本:
ansible-playbook -i etc/ansible/inventory.yml etc/ansible/playbook.yml

相关内容