Ansible 的脚本 --- playbook 剧本

目录

1. playbooks 各部分组成

2. playbook剧本实战演练

2.1 实战演练一:给被管理主机安装Apache服务

2.2 实战演练二:使用sudo命令将远程主机创建组

2.3 实战演练三:when条件判断指定的IP地址


 

1. playbooks 各部分组成


(1)Tasks:任务,即通过 task 调用 ansible 的模块将多个操作组织在一个 playbook 中运行
(2)Variables:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色

2. playbook剧本实战演练

2.1 实战演练一:给被管理主机安装Apache服务

在ansible服务器主机,给远程被管理主机制作安装Apache服务的剧本文件demo1.yaml

cd /etc/yum.repos.d/     #制作本地yum源
cd /etc/ansible/playbook/    #将修改后的httpd.conf文件复制到当前目录中

vim /etc/ansible/playbook/play1.yaml 

- name: first play
  gather_facts: false
  hosts: webservers
  remote_user: root
  vars:
  - http_port: 8080
  tasks:
  - name: disable firewalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: 'setenforce 0'
    ignore_errors: yes
  - name: copy local yum repo
    copy: src=/etc/yum.repos.d/local.repo  dest=/etc/yum.repos.d/local.repo
  - name: mount cdrom
    mount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted
  - name: install httpd
    yum: name=httpd  state=latest
  - name: copy config template file
    template: src=httpd.conf.j2  dest=/etc/httpd/conf/httpd.conf
    notify: "reload httpd"
  - name: start httpd
    service: name=httpd state=started enabled=yes
  handlers:
  - name: reload httpd
    service: name=httpd state=reloaded

运行playbook

ansible-playbook test1.yaml
//补充参数:
-k(–ask-pass):用来交互输入ssh密码
-K(-ask-become-pass):用来交互输入sudo密码
-u:指定用户
ansible-playbook play1.yaml --syntax-check    #检查yaml文件的语法是否正确
ansible-playbook play1.yaml --list-task       #检查tasks任务
ansible-playbook play1.yaml --list-hosts      #检查生效的主机
ansible-playbook play1.yaml --start-at-task='install httpd'     #指定从某个task开始运行

 

ansible-playbook play1.yaml
systemctl status httpd   #在被控制的主机查看

 

2.2 实战演练二:使用sudo命令将远程主机创建组

在ansible服务器主机,给远程被管理主机制作创建组xy103用户为lixang,并获取网关,主机sudo切换用户plsy2.yaml 

vim /etc/ansible/playbook/play2.yaml 

- name: second play
  remote_user: kongxin
  become: yes
  become_user: root
  hosts: dbservers
  gather_facts: true
  vars:
  - myname: liliang
  - myclass: xy103
  tasks:
  - name: create group
    group:
      name: "{{myclass}}"
  - name: create user
    user:
      name: "{{myname}}"
      groups: "{{myclass}}"
  - name: copy file
    copy:
      content: "{{ansible_default_ipv4.gateway}}"
      dest: /opt/gateway.txt

ansible-playbook play2.yaml

 再被管理主机上查看

 

ansible-playbook test1.yaml -e "myname=kongxin"     #在命令行里定义变量

 

 

ansible-playbook play2.yaml -k -K

 

2.3 实战演练三:when条件判断指定的IP地址

 在Ansible中,提供的唯一一个通用的条件判断是when指令,当when指令的值为true时,则该任务执行,否则不执行该任务。

- name: third play
  remote_user: root
  hosts: webservers
  gather_facts: true
  tasks:
  - name: copy scj.sh to 80.30
    copy: src=/opt/kx.sh  dest=/opt/
    when: ansible_default_ipv4.address == "192.168.80.30"

  - name: run kx.sh on 80.20 and 80.30
    script: '/opt/kx.sh scj tangjun'
    when: inventory_hostname != "192.168.80.30"

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值