前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible之Playbook

ansible之Playbook

作者头像
友儿
发布2022-09-19 09:28:53
1K0
发布2022-09-19 09:28:53
举报
文章被收录于专栏:友儿

playbook 是什么?

  • playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中一系列tasks,可以让远程主机达到预期状态,也可以说,playbook字面意思是剧本,现实中由演员按剧本表演,在ansible中由计算机进行安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。
  • ansible使用playbook来管理自动化task,playbook是yaml格式的文件,其基本内容可以认为是多条ansible的ad-hoc的语句组成。我们完成一个任务,例如安装部署一个httpd服务,我们需要多个模块(一个模块也可以称之为task)提供功能来完成。而playbook就是组织多个task的容器,他的实质就是一个文件,是用yaml(Yet Another Markup Language)语言编写的文件,有着特定的组织格式。YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便,YAML语法能够简单的表示散列表,字典等数据结构。
  • playbook命令根据自上而下的顺序依次执行。同时,playbook开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。

ansible-playbook 常用命令

代码语言:javascript
复制
ansible-playbook playbook.yml [options]

# ssh 连接的用户名
-u REMOTE_USER, --user=REMOTE_USER

# ssh登录认证密码
-k, --ask-pass    

# sudo 到root用户,相当于Linux系统下的sudo命令
-s, --sudo       
    
# sudo 到对应的用户
-U SUDO_USER, --sudo-user=SUDO_USER   
 
# 用户的密码(—sudo时使用)
-K, --ask-sudo-pass     

# ssh 连接超时,默认 10 秒
-T TIMEOUT, --timeout=TIMEOUT

# 指定该参数后,执行 playbook 文件不会真正去执行,而是模拟执行一遍,然后输出本次执行会对远程主机造成的修改
-C, --check      

# 设置额外的变量如:key=value 形式 或者 YAML or JSON,以空格分隔变量,或用多个-e
-e EXTRA_VARS, --extra-vars=EXTRA_VARS    

# 进程并发处理,默认 5
-f FORKS, --forks=FORKS    

# 指定 hosts 文件路径,默认 default=/etc/ansible/hosts
-i INVENTORY, --inventory-file=INVENTORY   

# 指定一个 pattern,对- hosts:匹配到的主机再过滤一次
-l SUBSET, --limit=SUBSET    

# 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook
--list-hosts  

# 列出该 playbook 中会被执行的 task
--list-tasks   

# 私钥路径
--private-key=PRIVATE_KEY_FILE   

# 同一时间只执行一个 task,每个 task 执行前都会提示确认一遍
--step    

# 只检测 playbook 文件语法是否有问题,不会执行该 playbook
--syntax-check  

# 当 play 和 task 的 tag 为该参数指定的值时才执行,多个 tag 以逗号分隔
-t TAGS, --tags=TAGS   

# 当 play 和 task 的 tag 不匹配该参数指定的值时,才执行
--skip-tags=SKIP_TAGS   

# 输出更详细的执行过程信息,-vvv可得到所有执行过程信息。
-v, --verbose   

ansible 执行ping命令 与 ansible-playbook 执行ping命令

  • ansible 执行ping命令
代码语言:javascript
复制
[vagrant@controller my_ansible_working_dir]$ ansible all -m ping
node3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
node2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
  • ansible-playbook 执行ping命令
代码语言:javascript
复制
[vagrant@controller my_ansible_working_dir]$ cat site1.yml
---

- name: ping module
  hosts: all

  tasks:
    - name: ping test
      ping:
[vagrant@controller my_ansible_working_dir]$ ansible-playbook site1.yml

PLAY [ping module] ********************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************
ok: [node3]
ok: [node2]
ok: [node1]

TASK [ping test] **********************************************************************************************************************
ok: [node3]
ok: [node2]
ok: [node1]

PLAY RECAP ****************************************************************************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
node2                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
node3                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 08 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • playbook 是什么?
  • ansible-playbook 常用命令
  • ansible 执行ping命令 与 ansible-playbook 执行ping命令
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档