V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dylanninin
V2EX  ›  程序员

推荐一个关于 Ansible 的入门介绍

  •  
  •   dylanninin ·
    dylanninin · 2023-06-22 08:35:02 +08:00 · 3130 次点击
    这是一个创建于 518 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前做的一个关于 Ansible 的入门介绍,可以看看

    GitHub 链接: https://github.com/dylanninin/presentation/blob/master/2020-09-11_Ansible-Intro.pdf

    Slideshare 链接: https://www.slideshare.net/DylannininGogh/ansible-introduction-238633094

    21 条回复    2023-06-25 14:24:57 +08:00
    lairdnote
        1
    lairdnote  
       2023-06-22 09:15:28 +08:00
    現在誰還會用這個啊 。。都是 k8s aws
    wheeler
        2
    wheeler  
       2023-06-22 10:29:49 +08:00
    @lairdnote ansible 和 k8s 的重叠很小吧
    mmm159357456
        3
    mmm159357456  
       2023-06-22 11:03:41 +08:00
    都是英文的话我觉得还是看 ansible core 的 docs 就够了
    plko345
        4
    plko345  
       2023-06-22 13:43:20 +08:00
    @lairdnote 这是怎么对比的, 两个领域的东西吧
    shuimugan
        5
    shuimugan  
       2023-06-22 14:07:34 +08:00 via Android
    ansible 近两年也没啥大更新,我现在是直接提需求 chatgpt 写的,批量复制文件、执行命令、追加 hosts 、安装软件、起服务之类的命令准确率很高
    dylanninin
        6
    dylanninin  
    OP
       2023-06-22 14:58:02 +08:00
    @shuimugan 哈哈哈,666 ,这也可以。
    dylanninin
        7
    dylanninin  
    OP
       2023-06-22 15:03:35 +08:00
    @lairdnote 不是同一类东西啊,没法比。

    可以问问 ChatGPT

    Ansible 是一个广泛使用的配置管理和自动化工具,它可以帮助用户自动配置服务器、应用程序和其他基础设施组件。除 Ansbile 以外,市面上还存在许多类似的工具,这些工具在功能和工作方式上可能略有不同。以下是几个比较知名的 Ansible 替代品:
    - Puppet:Puppet 是一个流行的配置管理工具,它基于 Ruby 语言开发,使用声明式的 Puppet DSL (领域特定语言)来描述系统配置。Puppet 支持可扩展的模块化体系结构,可以与许多其他 DevOps 工具集成,如 Git 、Jenkins 等。
    - Chef:同样基于 Ruby 的 Chef 是另一个流行的配置管理工具。Chef 是基于程序化的(命令式)方法实现配置管理,允许用户通过编写 "Cookbook" 和 "Recipes" 的方式管理系统配置。Chef 的缺点是学习曲线较陡,但它强大的动态性吸引了许多高级用户。
    - SaltStack:SaltStack 是一个用 Python 编写的模块化配置管理和自动化工具。与 Ansible 类似,SaltStack 也是基于代理( agent )或无代理( agent-less )方式运行的。SaltStack 可以通过可扩展的插件系统自定义其功能,并支持 YAML 和 Jinja2 作为模板引擎。
    - Terraform:Terraform 是一个专注于基础设施即代码 (Infrastructure as Code) 的工具,由 HashiCorp 开发。它使用声明式的 HCL (HashiCorp Configuration Language) 管理各种云服务商(如 AWS 、Azure 、Google Cloud Platform 等)和其他基础设施资源。Terraform 在云服务自动化方面的功能非常强大。
    - Fabric:Fabric 是一个轻量级的 Python 库,用于配置管理和应用程序部署。Fabric 是一个命令式工具,主要用于在远程服务器上执行命令和文件传输。尽管 Fabric 功能相对较少,但它对于简单的部署和自动化任务来说是一个很好的选择。
    - CFEngine:CFEngine 是一个轻量级的配置管理工具,适用于大型网络环境。CFEngine 使用 C 语言编写并使用自己的声明式领域特定语言( DSL )作为配置文件。CFEngine 相对轻量级,性能出色并且具有极强的可扩展性。

    这些工具在功能和使用方法上有些许差异,您可以根据您的项目需求和喜好来选择使用哪种工具。
    dylanninin
        8
    dylanninin  
    OP
       2023-06-22 15:05:24 +08:00
    @lairdnote 问 ChatGPT

    ansible 和 k8s 有什么差异

    Ansible 和 Kubernetes (通常简称为 k8s )都是用于 IT 基础设施管理和自动化的工具,但它们之间存在很大的区别,关注的领域和使用场景也不同。

    1. 目标领域和范围:
    - Ansible 主要关注**配置管理**和**自动化**领域。它可以用于自动部署、配置服务器、应用程序和其他 IT 基础设施组件。Ansible 不局限于特定环境,可以在物理服务器、虚拟机或者云环境中使用。
    - Kubernetes 是一个**容器编排**系统,它用于自动化容器化应用程序的部署、扩展和管理。Kubernetes 专注于容器技术(如 Docker )的管理,主要适用于大规模、分布式和微服务架构的应用程序。

    2. 构建和部署方法:
    - Ansible 使用一种基于**代理**或**无代理**方式的 "推"( push )模式,将配置从控制节点( Control Node )推送到需要配置的目标节点( Target Node )。
    - Kubernetes 使用一个**主从**架构,其中由主节点( Master Node )控制工作节点( Worker Node )。工作节点运行容器化的应用程序,并根据主节点的指令自动进行部署和扩展。

    3. 配置语言和模板引擎:
    - Ansible 使用简单的 YAML 格式来编写 Playbook (执行脚本),支持使用 Jinja2 作为模板引擎。
    - Kubernetes 使用 YAML 格式编写资源清单来表示和管理容器化应用程序及其相关的组件(如服务、存储等)。

    4. 平台兼容性:
    - Ansible 是跨平台的,可以在几乎所有类型的操作系统(如 Linux 、Windows 、macOS )和计算环境中使用。
    - Kubernetes 主要在 Linux 环境中运行,尽管可以在 Windows 上运行 Kubernetes ,但支持和功能可能有限。

    总之,Ansible 和 Kubernetes 都是强大的 IT 基础设施管理工具,但它们主要关注的领域和应用场景有很大区别。在实践中,这两者之间并不是替代关系,很多时候可以互补使用。例如,可以使用 Ansible 来部署和配置 Kubernetes 集群,然后使用 Kubernetes 来管理部署在集群中的容器化应用程序。
    dylanninin
        9
    dylanninin  
    OP
       2023-06-22 15:08:00 +08:00
    @mmm159357456 嗯嗯,主要都是英文的,ansible 的主要特性都涵盖了,官方文档必须精读,才能少采坑
    leonhao
        10
    leonhao  
       2023-06-22 15:36:47 +08:00
    ansible 和 k8s 有毛关系,自建 k8s 还是用 ansible 部署的
    jorneyr
        11
    jorneyr  
       2023-06-22 17:36:27 +08:00
    Ansible 的信创环境支持怎么样,离线安装容易吗?
    现在国内信创发展速度太快。
    vmlinz
        12
    vmlinz  
       2023-06-22 18:23:46 +08:00   ❤️ 1
    ansible 还是不错的,不过现在 provision 的方式太多了,大部分 distro 都支持 cloud-init ,launch 的时候大部分配置需求都可以满足。更复杂的情况才会考虑 ansible ,chef 这类。
    hhjswf
        13
    hhjswf  
       2023-06-22 18:32:42 +08:00 via Android
    @dylanninin 这不就是 k8s 的 config map ?
    PendingOni
        14
    PendingOni  
       2023-06-22 18:42:03 +08:00
    hh 记得第一份工作做 CICD 的时候用的就是 Ansible 加上自建 Jenkins
    dylanninin
        15
    dylanninin  
    OP
       2023-06-22 19:02:12 +08:00 via iPhone
    @hhjswf 😂 都是 yaml 工程师
    dylanninin
        16
    dylanninin  
    OP
       2023-06-22 19:07:06 +08:00 via iPhone
    @hhjswf 还真不是,简单说,ansible 基于 ssh ,用 yaml 编写可重复运行的自动化部署脚本。
    dylanninin
        17
    dylanninin  
    OP
       2023-06-22 21:25:11 +08:00 via iPhone
    @jorneyr 还没试过离线安装,不知难易程度怎么样
    lairdnote
        18
    lairdnote  
       2023-06-23 08:06:35 +08:00
    @dylanninin 格局打開 當你真用過了你就知道差別了。。
    bxb100
        19
    bxb100  
       2023-06-23 08:24:12 +08:00 via Android   ❤️ 1
    ansible jenkins terrform cicd 三小子
    dylanninin
        20
    dylanninin  
    OP
       2023-06-23 08:46:00 +08:00
    @lairdnote true
    invzhi
        21
    invzhi  
       2023-06-25 14:24:57 +08:00
    正好在学,打算用这个把我自建的服务器方案自动化一下嘿嘿
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2814 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:00 · PVG 23:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.