首先安装 ansible, 推荐使用 pipx 管理 Python 编写的命令行程序, 可以参考 Makefile 中的 ansible
rule.
git clone https://github.com/ak1ra-lab/selfhosted-server.git
cd selfhosted-server
make install
make install
会使用 community.general.ansible_galaxy_install
module 安装 collection, 通过传入 PLAYBOOK_HOSTS
环境变量, 可以比较方便在多台主机上安装此 collection, collection 安装后在别的 playbook 中使用时需要使用 FQDN (fully qualified domain name). 本项目的 namespace 是 ak1ra_lab.selfhosted_server
.
NOTE:
community.general.ansible_galaxy_install
会在一个"全新"的 shell 中执行 ansible-galaxy 命令? 本地运行的时候没有问题, 放到 CI 上时,requirements_file
一直提示无法找到文件, 大概是无法使用相对路径.
使用 pipx 安装的 ansible 有时候会缺失一些 Python 依赖,
- 可以使用
pipx runpip ansible list -v
查看 ansible 安装的 Python 依赖 - 以
boto3
为例, 可以使用pipx inject ansible boto3
安装缺失的依赖 - 参考 install.yaml 中
community.general.pipx
task
我们在 Makefile
中预置了一些常用的 ansible-playbook Makefile receipts,
可以使用 make
或者 make help
查看帮助信息,
$ make help
ansible pipx install ansible
format reformat yml/yaml files recursively
build ansible-galaxy collection build
install ansible-galaxy collection install
clean clean up working directory
encrypt ansible-vault encrypt credentials/*.yaml
decrypt ansible-vault decrypt credentials/*.yaml
common initial tasks with roles/common
docker install docker with roles/docker
certbot install certbot with roles/certbot
nginx install nginx with roles/nginx and roles/nginx_config
gcloud install gcloud with roles/gcloud
jenkins install jenkins with roles/jenkins
rsstt install RSStT with roles/rsstt (https://github.com/Rongronggg9/RSS-to-Telegram-Bot)
singbox install singbox with roles/singbox
- init-user.sh, 用于处理没有 cloud-init 加持的服务器最基本的初始化, 普通用户创建, 添加 SSH keys.
MIT License