最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Ansible 快速入门

    正文概述 掘金(又拍云)   2021-07-06   524

    Ansible 是什么?

    Ansible是一个配置管理和配置工具,它使用SSH连接到服务器并运行配置好的任务,服务器上只需要开启ssh,所有工作都交给client端的ansible负责。

    当我们有批量部署的需求时,我们可以自己写脚本,但是更推荐使用 Ansible。使用 Ansible 无需编码只需要配置 yaml 文件即可,并且 Ansible 已经内置了幂等性、并发度控制等功能,大大减少了批量部署时的工作量。

    Ansible 快速入门

    Ansible 原理示意图如上,我们需要关注以下 3 点就能掌握 Ansible 的大致原理。第一,hosts 配置文件的作用是告诉 Ansible 你的程序要部署到哪些机器;第二,yaml 文件的作用是告诉 Ansible 在目标机器上执行哪些操作。第三,Ansible 不需要在目标机器上安装客户端,它通过 SSH 把指令和要部署的程序发送到目标机器上。

    安装 Ansile

    安装命令:

    python3 -m pip install --user ansible==2.5.4
    

    验证安装是否正确:

    ansible --version
    

    配置 Ansible

    • 配置 .ansible.cfg 文件

    .ansible.cfg 的路径:~/.ansible.cfg

    将以下内容写入 .ansible.cfg 文件:

    [defaults]
    # inventory 是声明 hosts 配置文件
    inventory=~/.ansible/hosts
    
    • SSH 使用密钥登录服务器

    设置 SSH 通过密钥登录。使用 ssh-keygen 命令生成密钥对,把 id_rsa.pub 写入目标服务器的 authorized_keys 文件中。

    • 编辑 hosts 文件

    hosts 配置文件的格式是 ini。示例如下

    # serviceA 是集群名称
    [serviceA]
    # 枚举 serviceA 集群的 ip 地址
    192.168.33.10
    

    编辑 YAML 文件

    告诉 Ansible 在目标机器上执行哪些操作的 YAML 文件,Ansible 把这类文件称为 “playbook”。

    下面我们一起编写一个为名 hello.yml 的 playbook。这个 playbook 的作用是把 helloworld 文件发送到 serviceA 集群。

    # hosts 是要部署服务的集群
    - hosts: serviceA
    # remote_user 是以 root 用户登录远程机器
      remote_user: root
    # vars 是定义一些变量。这些变量可以在接下来的 tasks 中使用。
      vars:
         src: /Users/yutou/mywork/ansible-playbook
    # tasks 是在远程机器上具体的执行动作。
      tasks:
          # name 是该动作的名称
          - name: upload helloworld
            # copy 是要具体执行的动作。copy 是 Ansible 模块,它的作用是把本地文件上传到目标机器上去。
            # {{ src }} 是 Jinja2 模板语法,Jinja2 模板语法不懂的话可自行百度。
            copy: src={{ src }}/helloworld dest=/home
    

    发布

    
    ansible-playbook hello.yml
    

    Ansible playbook 常用模块

    ansible 很多模块都可以做到 “见其名,知其意”,很多模块都是对 Linux 命令的模仿或者封装,更多模块可参见官方文档。下面我们先挑几个模块简单介绍一下:

    • synchronize,copy,unarchive 都可以上传文件。

    • ping:检查指定节点机器是否还能连通。主机如果在线,则回复pong。

    • yum, apt:这两个模块都是在远程系统上安装包的。

    • pip:远程机器上 python 安装包。

    • user,group:用户管理的。

    • service:管理服务的,类似于 centos7 上的 service。

    template 模块和在远程机器上执行 Linux 命令的模块是非常重点的模块,所以接下来重点介绍一下。

    Ansible playbook 常用模块

    配置文件的一个特点是每个机器上的文件都不一样,都需要一些个性化配置,比如 A 机器配置 “hello world”,B 机器配置 “hello Liming”。这种需求就需要 template 模块实现。

    template 模块使用 Jinja2 语法对模板文件进行渲染,然后把渲染后的文件上传到目标机器。渲染时用到的变量可以从 3 个地方读取到:

    • ansible 内置变量;

    • hosts 文件中定义的变量,如上所示;

    • 在 playbook 中 vars 定义的变量。

    举例,模板文件 hello_x,内容如下:

    hello {{ name }}
    

    hosts 文件配置如下:

    
    [serviceA]
    192.168.33.10 name=world
    192.168.33.11 name=Liming
    

    在 playbook hello_x.yml 中配置如下:

    
      tasks:
          - name: upload helloworld
            template: src={{ src }}/hello_x dest=/home
    

    执行 ansible-playbook hello_x.yml 后,192.168.33.10 上 /home/hello_x 文件的内容就是 hello world, 192.168.33.11 上则是 hello Liming

    在远程机器上执行 Linux 命令

    raw, command,shell 这三个模块都以用来在远程机器上执行 Linux 命令。三种区别大致区别如下:

    • 一般情况下使用 command

    • 命令中有特殊字符使用 shell

    • raw 是直接执行原始命令,没有经过模块封装,不建议用。

    注意命令的内容一般使用 "" 引起来,否则模板渲染的时候可能报错:

    
        - name: start datanode
          command: "/hadoop-2.7.5/sbin/hadoop-daemon.sh start datanode"
    

    推荐阅读

    Redis 存储对象信息是用 Hash 还是 String

    实操笔记:为 NSQ 配置监控服务的心路历程


    起源地下载网 » Ansible 快速入门

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元