Skip to content

repo of ansible collection ak1ra_lab.selfhosted_server

License

Notifications You must be signed in to change notification settings

ak1ra-lab/selfhosted-server

Repository files navigation

ak1ra_lab/selfhosted_server

Quick start

首先安装 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 inject

使用 pipx 安装的 ansible 有时候会缺失一些 Python 依赖,

  • 可以使用 pipx runpip ansible list -v 查看 ansible 安装的 Python 依赖
  • boto3 为例, 可以使用 pipx inject ansible boto3 安装缺失的依赖
  • 参考 install.yaml 中 community.general.pipx task

Makefile

我们在 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

Scripts

  • init-user.sh, 用于处理没有 cloud-init 加持的服务器最基本的初始化, 普通用户创建, 添加 SSH keys.

License

MIT License