在使用Ansible部署python应用程序时,我很难理解如何实现权限提升。
在我当前的设置中:
不管我通过Ansible做了什么,它的结局要么是通过John,要么是root (用become: true)。
我想:
当我手动登录到VM中时,上面的列表非常简单--我使用sudo su -成为超级用户来处理点1-2,然后是su new-system-user,完成点3-5等等。
在使用become: true或使用我的SSH用户时,有些任务在Ansible中也很容易完成,但是在使用新创建的系统用户时我得到了许多权限问题,任务3-5中的become_user: "{{ system_user }}"似乎不像预期的那样工作。
我想问你,解决这个问题的最佳方法是什么?我唯一的解决办法是在我的SSH用户的上下文中完成所有事情,然后将&chown复制到新的系统-用户,但这似乎是一个黑客,而且我非常肯定,当涉及到正确的权限提升时,我遗漏了一些东西。
发布于 2022-02-16 19:33:24
即使我不能回答
解决这个问题的最佳方法是什么?
完全地说,步骤1-3和步骤6可能只是在某种程度上是可能的。
---
- hosts: pyapp
become: true
tasks:
- name: Make sure packages are installed
yum:
name: supervisor
state: latest
- name: Create group in local system
group:
name: pyapp
gid: '1234'
- name: Configure local account in system
user:
name: "pyapp"
system: yes
createhome: yes
uid: '1234'
group: '1234'
shell: /sbin/nologin
comment: "My Python App"
state: present
- name: Download and unpack
unarchive:
src: "https://{{ DOWNLOAD_URL }}/myPythonApp.tar.gz"
dest: "/home/pyapp/"
remote_src: yes
owner: "pyapp"
group: "pyapp"
- name: Make sure log directory exists
file:
path: "/var/log/pyapp"
state: directory
owner: 'pyapp'
group: 'pyapp'
- name: Make sure supervisord config file is provided
copy:
src: "pyapp.ini"
dest: "/etc/supervisord.d/pyapp.ini"
- name: Make sure service becomes started and enabled
systemd:
name: supervisord
state: started
enabled: true
daemon_reload: true
- name: Make sure application is in started state
supervisorctl:
name: pyapp
state: started与配置文件 (pyapp.ini)类似
[program:pyapp]
directory=/home/pyapp
command=/usr/bin/python /home/pyapp/myPythonApp.py
user=pyapp
process_name=%(program_name)s
autorestart=true
stderr_logfile=/var/log/pyapp/stderr.log
stdout_logfile=/var/log/pyapp/stdout.log将其他值保留在默认值中。
我正在使用这样的方法,它只是起作用。第三步,也可以通过使用git模块下载。
模块文档--按发生顺序排列的
进一步阅读
您可以先看看管理Python库依赖项和示例。还有安装分发包和运行主管。
https://stackoverflow.com/questions/71141568
复制相似问题