- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在多台具有不同用户名和密码的 Linux 服务器上运行更新。我认为这是一个常见的用例,但文档中没有涉及。有 SSH 身份验证,但我需要提升对更新过程的访问权限,而 Ansible 任务需要太多权限才能通过 sudoers 文件执行此操作。
如何从一个文件库中的库存中获取不同的 ansible_password,以便我可以运行该剧本,仅输入一个密码来解密所有 sudo 密码,并使其正常运行?
库存:
[servers]
1.2.3.4 ansible_user=user1 ansible_password=password1
1.2.3.5 ansible_user=user2 ansible_password=password2
1.2.3.6 ansible_user=user3 ansible_password=password3
剧本:
---
- hosts: servers
become: yes
become_method: sudo
gather_facts: false
vars:
verbose: false
log_dir: "/var/log/ansible/dist-upgrade/{{ inventory_hostname }}"
pre_tasks:
- name: Install python for Ansible
raw: sudo bash -c "test -e /usr/bin/python || (apt -qqy update && apt install -qy python-minimal)"
changed_when: false
tasks:
- name: Update packages
apt:
update_cache: yes
upgrade: dist
autoremove: no
register: output
- name: Check changes
set_fact:
updated: true
when: not output.stdout is search("0 upgraded, 0 newly installed")
- name: Display changes
debug:
msg: "{{ output.stdout_lines }}"
when: verbose or updated is defined
- block:
- name: "Create log directory"
file:
path: "{{ log_dir }}"
state: directory
changed_when: false
- name: "Write changes to logfile"
copy:
content: "{{ output.stdout }}"
dest: "{{ log_dir }}/dist-upgrade_{{ ansible_date_time.iso8601 }}.log"
changed_when: false
when: updated is defined
connection: local
最佳答案
问题:“如何从一个文件库中的库存中获取不同的 ansible_password?”
A:用密码创建字典。例如,给定树
shell> tree .
.
├── ansible.cfg
├── group_vars
│ └── servers
│ ├── ansible_password.yml
│ └── my_vault.yml
├── hosts
└── pb.yml
shell> cat hosts
[servers]
1.2.3.4 ansible_user=user1
1.2.3.5 ansible_user=user2
1.2.3.6 ansible_user=user3
shell> cat group_vars/servers/my_vault.yml
my_vault:
1.2.3.4:
ansible_password: password1
1.2.3.5:
ansible_password: password2
1.2.3.6:
ansible_password: password3
并声明变量ansible_password
shell> cat group_vars/servers/ansible_password.yml
ansible_password: "{{ my_vault[inventory_hostname].ansible_password }}"
shell> ansible-vault encrypt group_vars/servers/my_vault.yml
Encryption successful
shell> cat group_vars/servers/my_vault.yml
$ANSIBLE_VAULT;1.1;AES256
3361393763646264326661326433313837613531376266383239383761...
3564366531386130623162386332646366646561663763320a63353365...
...
shell> cat pb.yml
- hosts: servers
tasks:
- debug:
var: ansible_password
给予
ok: [1.2.3.4] =>
ansible_password: password1
ok: [1.2.3.5] =>
ansible_password: password2
ok: [1.2.3.6] =>
ansible_password: password3
使用 pass标准的 unix 密码管理器
您可以使用pass 代替vault .例如,将密码放入pass
shell> pass 1.2.3.4/user1
password1
shell> pass 1.2.3.5/user2
password2
shell> pass 1.2.3.6/user3
password3
并使用查找插件 community.general.passwordstore。查看详情
shell> ansible-doc -t lookup community.general.passwordstore
删除文件 group_vars/servers/my_vault.yml 并更改 ansible_password 的声明
shell> cat group_vars/servers/ansible_password.yml
passwordstore_name: "{{ inventory_hostname }}/{{ ansible_user }}"
ansible_password: "{{ lookup('community.general.passwordstore',
passwordstore_name) }}"
上面的剧本会给出相同的结果。
关于ansible - 如何在一个文件库中为多个主机定义 sudo 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59842933/
sudo 命令 1、sudo 简介 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户
我正在尝试更改 source.list。 主机有一个用户 deploy 和密码 deploy 我可以连接 ssh 并使用 sudo 对 source.list 进行任何操作。然而 ansible 似乎
我希望以我当前用户的权限运行 TOMCAT,而不是 root 的环境变量。 vagrant@dev:~/Workspace/eurekastreams$ echo $JAVA_OPTS -Xmx102
这个问题在这里已经有了答案: How to install python modules without root access? (9 个回答) 3年前关闭。 最终目标是在 redhat 机器上的
我一直在尝试允许 EC2 亚马逊服务器('ec2-user')的普通用户访问某个库。 我做了:“sudo chown -R ec2-user/usr”,我现在意识到这是一个致命的错误。它起作用了,但是
我正在尝试使用 cgi (python) 配置 apache2。为此,我必须更改某些文件夹和文件的权限,但每次尝试更改文件或文件夹的权限时,我都会收到 sudo fatal error 。 例如: 1
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我不想在 sudoers 文件中禁用 requiretty。请建议当我在 cron 作业中执行脚本时是否有其他方式启动终端 最佳答案 这可能是一个奇怪的解决方法,但您可以使用 -t 选项通过 cron
寻找将当前用户的别名传递给 sudo 的方法命令,我找到了以下 on ArchWiki : Passing aliases If you use a lot of aliases, you might
我已将 Royal TS 设置为在多台 Linux 计算机上使用我的用户名自动登录。我想让它在连接后自动运行 sudo su -,输入我的密码,这样只需双击连接即可获得 root 权限。 我已经通过创
我正在尝试使用涉及使用 sudo 的子进程。 它在终端中运行良好: sudo /home/pi/Desktop/fm_transmitter/bin/Release/fm_transmitter
我想通过 ssh 连接到远程服务器,更改用户然后执行脚本。我正在使用 subprocess 来执行此操作,但似乎 sudo -u userB -i 并未更改用户。 HOST = 'remote_ser
我正在尝试使用 Ansible 来配置一个 Vagrant 框和一个 EC2 服务器。使用 --connection=local 时,它在 Vagrant 框上工作正常,但似乎只是忽略了 sudo:
嗨,我为 Ansible 编写了一个剧本来安装一些应用程序。我遇到了麻烦,因为我必须以 root 身份运行所有东西,这不是一个好主意。 所以我创建了一个 sudo 用户并创建了一个用于身份验证的私钥。
我想通过 electron 写一个应用程序,但要求是更新需要 root 的文件允许。 通过 cli 很容易实现,就像 sudo vi xxx . 是否可以通过 electron 更新文件? ? 最佳答
我已经安装了以下 pkgs: ii tigervnc-common 1.10.1+dfsg-1 amd
我有一个经销商 Web 服务器,正在将其迁移到新计算机中。源服务器所有者提供了一个用户(我们称之为用户 A),该用户对其他用户具有 sudo 访问权限,但对 root 没有权限。我的用户没有对我需要提
use std::fs::OpenOptions; use std::io::Write; fn main() { let mut source_list = OpenOptions::new
我正在尝试使用命令 sudo jupyterhub 启动 JupyterHub。这会启动服务器,但用户无法登录。但是,当我使用 sudo -s 切换到 root 用户,然后输入 jupyterhub
我正在尝试安装 pip,但我在 StackOverflow 中陷入了相互冲突的答案中(请阅读末尾的评论以了解重复的问题)。 instructions说下载get-pip.py并使用 phyton 运行
我是一名优秀的程序员,十分优秀!