一文带你熟悉ansible-playbook剧本

本文详细介绍了Ansible的Playbook功能,包括剧本的组成、常用命令参数以及编写格式。通过实例展示了如何使用Playbook创建用户组和用户、安装HTTP服务、配置NFS服务等自动化管理任务,强调了YAML语法规范和Ansible模块的使用。
摘要由CSDN通过智能技术生成

#前言:本文将继续讲解ansible系列知识,前两篇讲解了ansible入门、基本使用和常用模块使用,这篇将介绍ansible-playbook和它基本的编写格式使用

#playbook(剧本)介绍

#playbook简单介绍
playbook翻译过来就是剧本,以yml/yaml为后缀结尾的一个文本文件

#playbook组成:分为两部分play(定义主机的角色)和task(具体执行什么任务)
play	(找谁) 如- hosts: update() 
tasks	(干什么) 如:安装软件,包括文件

#playbook命令帮助

[root@k8s-master ~]# man ansible-playbook
[root@k8s-master ~]# ansible-playbook -h
#语法格式:ansible-playbook [option] playbook.yml  [playbook2 ….]

#常用参数:
-C, --check		#检查,运行但是不做任何的操作
-f FORKS, --forks=FORKS	#用来做并发
--list-hosts	#列出主机列表
--syntax-check	#进行语法检查

#playbook书写格式

#缩进	YAML使用固定的缩进风格表示层级结构,每个缩进两个空格,不适用tab键,如
- hosts: update
  tasks:

#冒号	除了以冒号结尾的,其他所有冒号后面都必须有空格,如
- hosts: update    tasks:(冒号结尾不用空格)

#短横线	表示列表项,适用一个短横杠加一个空格。多个项适用同样的缩进级别作为同一列表
- hosts: update
  tasks:
    - name: 

#使用步骤

#1.定义主机的角色
- hosts: k8s-master

#2、在playbooks中定义任务
tasks:
  - name: task description 	   #任务描述信息
  - module_name: module args   #需要使用的模块名字:模块参数

#3、ansible-playbook执行命令
[root@ctos1 roles]# ansible-playbook test.yml 
基本使用

1、使用剧本方法给被控制端创建用户组和用户

#1.1、查看定制的组,如果想控制不同功能的服务器,就划分到不同的组
[root@k8s-master yaml]# tail -n 7 /etc/ansible/hosts 
[k8s-etcd]
192.168.86.131

[k8s-node]
192.168.86.132
192.168.86.133

#1.2、编写yml文件
[root@k8s-master yaml]# pwd
/etc/ansible/yaml
[root@k8s-master yaml]# cat a1.yml 
- hosts: k8s-node
  tasks:
  - name: creategroup
    group: name=guoke
  - name: createuser
    user: name=demo10

#检查有无语法错误
[root@k8s-master yaml]# ansible-playbook --syntax-check a1.yml 

playbook: a1.yml

#列出这个组的主机列表
[root@k8s-master yaml]# ansible-playbook --list-hosts a1.yml 
playbook: a1.yml

  play #1 (k8s-node): k8s-node  TAGS: []
    pattern: [u'k8s-node']
    hosts (2):
      192.168.86.133
      192.168.86.132

#-C就是检查,白跑的,不会进行任何的操作
[root@k8s-master yaml]# ansible-playbook -C a1.yml 

#1.3、执行创建
[root@k8s-master yaml]# ansible-playbook a1.yml 

#1.4、到被控制端查看效果
[root@node1 ~]# id demo10
uid=1005(demo10) gid=1006(demo10) groups=1006(demo10)

2.安装htt服务,启动服务并加入开机自启,放行相对应的端口

#思路
1.安装http服务  yum
2.编写简单的网页进行测试 copy 
3.启动服务并加入开机自启 service 
4.放行firewalld对应的端口 firewalld

[root@game yaml]# cat install_pack.yml 
- hosts: all
  tasks:
    - name: Install httpd Packages
      yum: name=httpd state=present
    
    - name: http configure
      copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf backup=yes

    - name: configure content
      copy: src=/var/www/html/index.html dest=/var/www/html/index.html owner=root group=root mode=644

    - name: start httpd services
      service: name=httpd state=started enabled=yes

    - name: start firewall services
      service: name=firewalld state=started

    - name: configure firewalld
      firewalld: zone=public service=http  permanent=yes immediate=yes state=enabled

#进行语法检查
[root@game yaml]# ansible-playbook --syntax-check install_pack.yml 
[root@game yaml]# ansible-playbook install_pack.yml

3.使用ansible安装并配置nfs服务

#服务端:192.168.228.130
	1.安装nfs
	2.配置nfs
	3.根据配置创建目录,创建用户,授权
	4.启动并加入开机自启
  
#客户端:192.168.228.131
	1.准备一个空目录
	2.挂载服务端共享的目录
#提示:如果客户端没有安装nfs-utils,需要进行安装再挂载,否则会挂载的时候会报错

#剧本编写
[root@game yaml]# cat nfs.yml 
- hosts: 192.168.228.130
  tasks:
    - name: Installed nfs Services
      yum:
        name: nfs-utils
        state: present

    - name: Configure NFS
      copy:
        src: /etc/exports
        dest: /etc/exports
        backup: yes

    - name: Create Group
      group:
        name: www
        gid: '666'

    - name: Create User
      user:
        name: www
        uid: '666'
        group: '666'
        shell: /sbin/nologin
        create_home: no

    - name: Create Driectory
      file:
        path: /data
        state: directory
        owner: www
        group: www
        recurse: yes

    - name: Start NFS Server
      service:
        name: nfs
        state: restarted
        enabled: yes

- hosts: 192.168.228.131
  tasks:
    - name: Install NFS  Client
      yum:
        name: nfs-utils
        state: present

    - name: Create Mount Driectory
      file:
        path: /nfs_cl
        state: directory

    - name: Client Mount NFS Server
      mount:
        src: 192.168.228.130:/data
        path: /nfs_cl
        fstype: nfs
        opts: defaults
        state: mounted
#参数解释:
1.file模块:path:指定路径,state:创建的是目录,owner:指定所属主,group:指定所属组,recurse:递归创建
2.mount模块:src:源挂载点,path:本地挂载目录,fstype:类型
3.更多信息可使用ansible-doc +模块名查看帮助

#执行
[root@game yaml]# ansible-playbook  --syntax-check nfs.yml #语法检查
[root@game yaml]# ansible-playbook nfs.yml 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值