Ansible 用起来好爽😄

63 天前
 EyebrowsWhite

本人只是个前端,很早之前就听说过 ansible, terraform 这类运维工具,一直没机会上手玩一下,上个月借着 GCP 刚开通的 300 刀额度业余时间鼓捣了一下,到现在一个多月了,发现真的是个神器啊,特别是如果有个十来台服务器一起执行 playbook 的时候,有种莫名的爽感😄

8769 次点击
所在节点    程序员
68 条回复
Kirkcong
63 天前
@EyebrowsWhite #18 对于你的这个例子,playbook 写的应该是 docker compose 的安装(如果是 docker 的话)以及 wget 你的 docker compose yml 从 git 。

我个人有很多的 vps,不同用途,但基础配置通用,至于个性化的配置写入 ansible 是因为机器由于各种原因需要升级、重建,比如从一个服务商切换到另一个,又或者机器弄乱了,也可能是为了升级。

如果你的机器不多,没有重建的需求,可以只写通用的配置,比如关闭 selinux,关掉 firewalld,禁止 ipv6,创建用户,加 key,对于单个服务,如果是你的生产环境,那么要做好备份。
EyebrowsWhite
63 天前
@Kirkcong #15 是这样的,我自己也写了一个 bootstrap 的 role ,用来初始化服务器,和你这个很类似,创建管理员用户、安装基础包、加固 SSH 、修改 dotfiles 等等,确实是用起来相当舒服
EyebrowsWhite
63 天前
@Kirkcong #21 你这么说的话倒确实是,我没考虑到服务器到期更换这一点,我目前 netcup 稳如老狗,感觉它不倒我不换 haha
taberu
63 天前
看看我的 homelab ,基于 ansible 的自动 k8s 环境部署和配置。然后用 jsonnet 为何 k8s 的配置。
https://github.com/aetherrootr/os-environment
Kirkcong
63 天前
@w568w #20 我们几十上百台机器跑一个 playbook 获取 facts 都没你 10 分钟这么久,你这个不正常,debug 一下看看卡哪里了吧,命令后面加上-vvv
EyebrowsWhite
63 天前
@w568w 因为默认要 gather facts 吧,不过我个人感觉速度的优先级很低,自动化执行反而是稳定一点会比较重要
Kirkcong
63 天前
@taberu #24 好巧,我也是用 haproxy,不过我是两层,外部 haproxy 给到内部 haproxy
defunct9
63 天前
GCP 有直接建的 autopilot ,用这个东西手搓,真是闲的没事干了。
Kirkcong
63 天前
@defunct9 #28 需求不一样,autopilot 不满足
hervey0424
63 天前
管理个破电脑就这么爽了, 要是让你管理几个人那不得飞起来啊
Kirkcong
63 天前
@EyebrowsWhite #23 我最开始是腾讯轻量,后来换到了 aws lightsail, 再然后 hosthatch 黑五时候开了三年的机器,现在转到 ovh dedicate 了。。。
defunct9
63 天前
楼上热火朝天的,ansible 的变量有几个级别?这是我被面试的时候问到的问题。
salmon5
63 天前
看来你这个前端挺闲的
taberu
63 天前
@Kirkcong 集群内部的代理无所谓了,我用的比较传统的 Nginx ,在我的应用场景区别不大。
EyebrowsWhite
63 天前
@Kirkcong #31 牛的,下一步是 bare mental 哈哈哈
taberu
63 天前
@defunct9 啊?这是面 devops 的岗位吗?问一般的开发感觉有点离谱了。我觉得 ansible 能靠 Google/ai 写出来能跑的配置就行(:
EyebrowsWhite
63 天前
@EyebrowsWhite #35 typo mental -> metal
EyebrowsWhite
63 天前
@defunct9 #32 按优先级 roles/defaults 然后 all_vars, group_vars, host_vars, roles/vars, playbook 中的 vars

似乎是这样的,我也不太确定
w568w
63 天前
@Kirkcong 嗯,我也觉得奇怪,我准确描述一下现象:是忽快忽慢,有时几秒就 gather 完,有时每台都卡几分钟,甚至直接 connection timeout (而这时我自己连接 ssh 一直是稳定、速度正常的)。debug 不太方便做,所有 infra 都迁移出 ansible 了,现在想连还要重配 inventory ,比较麻烦

@EyebrowsWhite 是的。但调试 ansible playbooks 的时候,肯定不希望每试一个参数都花几分钟时间吧

---

我也补充下安利 pyinfra 的优点:

1. 纯 python 作为配置,不需要学奇怪的 yaml 脚本和模板语法,简单的管理完全可以单文件 all-in-one 。现在感觉 ansible 这一套复杂的目录结构只会导致配置文件碎片化,降低可维护性
2. 速度快,前面提过了,不说了
3. two-pass 执行,部署任务时可以先快速给你列出哪些任务需要执行、哪些任务可直接 skip ,然后根据实际情况选择执行
4. 文档简单,API 比 ansible 简易太多

缺点:

1. 没有 ansible 那么庞大的 roles 库,大部分复杂配置需要自己手敲(不过也敲不了几行,而且都是 Python ,很容易组织起来复用)
Kirkcong
63 天前
@EyebrowsWhite #35 dedicate 就已经是 baremetal 了,而且,我还有一台 colo 放联通机房了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1154933

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX