Ansible Vault: 加密 Ansible 仓库里的密钥

解决什么问题 Ansible 仓库里迟早会出现密钥:数据库密码、API token、TLS 私钥。playbook 和变量文件要进 git,密钥如果跟着明文进去,所有能克隆仓库的人和程序就都拿到了它,而且会永远留在历史里。 Ansible Vault 是 Ansible 自带的加密功能(命令是 ansible-vault,不用另外安装)。它解决的是一件事:让密钥以密文的形式和 playbook 放在同一个仓库里,运行 playbook 时自动解密。 它和 HashiCorp Vault 没有关系,只是名字像。HashiCorp Vault(以及它的 fork OpenBao)是一个常驻的密钥服务;Ansible Vault 只是一个文件加密工具,没有服务端。 原理 加密后的文件是这样的: $ANSIBLE_VAULT;1.1;AES256 62313365396662343061393464336163383764373764613633653634306231386433626436623361 6134333665353966363534333632666535333761666131620a663537646436643839616531643561 ... 第一行是头部:格式版本 1.1,算法 AES256。用了 vault ID(见下文)时版本是 1.2,头部末尾多一个标签。 加密过程:从 vault 密码用 PBKDF2-SHA256 加随机盐派生出密钥,用 AES-256(CTR 模式)加密内容,再用 HMAC-SHA256 防篡改,最后转成十六进制文本。 整个仓库通常只用一个 vault 密码。谁有这个密码,谁就能解开所有加密文件。 两种加密粒度 加密整个文件 # Create a new encrypted file and open it in $EDITOR ansible-vault create group_vars/prod/vault.yml # Encrypt an existing plaintext file in place ansible-vault encrypt group_vars/prod/vault.yml # Edit / view without leaving a plaintext copy on disk ansible-vault edit group_vars/prod/vault.yml ansible-vault view group_vars/prod/vault.yml # Change the password ansible-vault rekey group_vars/prod/vault.yml 只加密单个变量 ansible-vault encrypt_string 's3cr3t' --name 'db_password' 输出可以直接贴进普通的变量文件,文件其他部分仍是明文: ...

Created 20206-10-20 · Updated 20206-10-20 · 2 min · 301 words · -

openwrt basic, opkg basic, ipk

openwrt basic, opkg basic, ipk commands # 查看 openwrt 版本 cat /etc/openwrt_release # 更新所有软件,包括 OpenWRT 内核、固件等 opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade wan dns 在 wan 口设置里的“高级设置”选项里去掉"使用端局通告的DNS服务器"的勾选就可以使用自定义的DNS服务器 ssh port vim /etc/init.d/dropbear validate_section_dropbear > port ssh public key vim /etc/dropbear/authorized_keys dns 配置 查看本机的 DNS 配置: $ cat /etc/resolv.conf search lan nameserver 127.0.0.1 发现使用的是本机 DNS 服务器,即 dnsmasq。 查看 dnsmasq 配置: $ cat /etc/dnsmasq.conf 手动指定上游 dns vi /etc/dnsmasq.conf server=223.5.5.5 server=223.6.6.6 openwrt 改IP vi /etc/config/network opwnert init opkg install coreutils-nohup opkg install ipset opkg remove dnsmasq opkg install dnsmasq-full openwrt cron /etc/init.d/cron start /etc/init.d/cron enable crontab -e crontab -l x86, firmware download https://downloads.openwrt.org/releases/19.07.6/targets/x86/ ...

Created 11116-08-11 · Updated 12126-06-12 · 4 min · 685 words · -