triplepoint.znc
Ansible ZNC 
安装并配置 ZNC IRC 中继。
包括 ClientBuffer 模块,以支持每个账户多个独立的客户端缓冲区。
由于此角色依赖于 Docker 容器,因此调用 znc
二进制文件的方式不那么直接,比如 --makepass
。 作为参考,以下是在配置了 Docker 的机器上运行密码命令的方法:
docker run -it --rm triplepoint/docker-znc:latest znc --makepass
需求
没有强依赖角色,但此角色需要在主机上运行某种 Docker 环境才能部署。geerlingguy.docker
角色满足这一要求。
角色变量
有关 ZNC 配置的更多详细信息,请参阅 ZNC 配置文档。
有关 ZNC 的全局、用户和网络模块的更多信息,请参阅 ZNC 模块文档。
ZNC 安装
znc_exec_user: znc-admin # 创建 ZNC 运行的用户
znc_exec_user_and_group_id: 1066 # 执行用户的 UID 和 GID
znc_docker_image_version: 0.1.6 # `triplepoint/docker-znc` Docker 镜像的标签版本
znc_install_version: 1.6.5 # 使用 Docker 镜像安装的 ZNC 版本。应保持同步。
znc_config_root: /etc/znc # ZNC 配置文件结构的根位置
ZNC 全局配置
znc_max_buffer_size: 100000 # 任何用户缓冲区的最大大小。如果未提供用户特定值,则使用此默认值。
znc_port: 6666 # ZNC 将监听哪个端口?
znc_ipv4: true # ZNC 是否应该监听 IPv4 连接?
znc_ipv6: false # 否则使用 IPv6?
znc_ssl: true # ZNC 是否应该期望通过 SSL 进行连接?
znc_ssl_certfile: "{{ znc_config_root }}/znc.pem" # 如果启用了 SSL,PEM 文件在哪里?这是由 Ansible 生成的。
znc_global_modules: # 应在所有用户和网络中安装哪些全局模块?请注意,这些与下面定义的用户和网络模块是分开的。
- webadmin
ZNC 用户定义配置
znc_users: # 建议有一个没有网络的单独管理员用户,以直接管理 ZNC 服务器。这里我们仅有一个用户,为了简洁。
- name: admin
password: # 这些可以使用 `znc --makepass` 生成。这个是 "admin" 的密码。
method: "sha256"
hash: "481fe84cc70161b20eb0c487d212e8b94cabb45cb9f08b6c51cc2c0131c1b42e"
salt: "J*;s-Z!gjJ:oJ.kThRZv"
nick: adminuser
realname: Admin ZNC User
admin: true # 至少应该有一个管理员用户,但典型用户可能不应该是管理员。
allow: "*" # 可选
altnick: adminuser_ # 可选
autoclearchanbuffer: true # 可选,如果使用 clientbuffer 应该为 false
autoclearquerybuffer: true # 可选,如果使用 clientbuffer 应该为 false
buffer: 100000 # 可选
chanmodes: "+stn" # 可选
ident: adminuser_ # 可选
multiclients: false # 可选
networks: # 可选,虽然没有任何网络,用户将无法连接到任何外部 IRC 服务器。
freenode:
server: chat.freenode.net
port: 6697
ssl: true
password: "" # 可选,这是用户登录远程聊天服务器的密码。
channels: # 可选列表,用户将在远程聊天服务器上连接到每个通道。
- "#freenode" # 如果通道名称中有哈希,YAML 中需要注释。
modules: # 可选列表,这些是网络特定模块。
- route_replies
- keepnick
- clientbuffer # 如果为此用户启用了此选项,务必禁用 `autoclearchanbuffer` 和 `autoclearquerybuffer`。
modules: # 这些是用户特定模块。
- chansaver
- controlpanel
- webadmin
依赖
无。
示例剧本
- hosts: whatever
roles:
- triplepoint.znc
角色测试
此角色使用 molecule
测试,使用 pipenv
管理依赖和 Python 测试环境。
设置执行环境
pip install pipenv
请注意,pip-tools
似乎与 pipenv
不兼容。为确保正常工作,请勿安装 pip-tools
。
安装 pipenv
后,可以使用以下命令构建执行虚拟环境:
pipenv install --ignore-pipfile
这将创建一个拥有所有 Python 依赖包的虚拟环境。
运行测试
配置好环境后,可以执行 molecule
:
pipenv run molecule test
重新生成锁定文件
您不必经常这样做,但如果您通过 pipenv install {some_package}
命令或直接编辑 Pipfile
更改了 Python 包需求,或者发现构建依赖已过期,您可能需要重新生成 Pipfile.lock
。
pipenv lock
完成此过程后,请确保将重新生成的 Pipfile.lock
提交到版本控制中。
许可证
MIT