【Ansible 的脚本 --- playbook 剧本】

目录


一、playbook 剧本介绍

playbooks 本身由以下各部分组成

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

二、示例

bash 复制代码
vim  /etc/ansible/playbook/deamo1.yml
bash 复制代码
---
- name: the first play for install apache
  #gather_facts: false
  hosts: dbservers
  remote_user: root
  tasks:
  - name: disable firewwalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: '/usr/sbin/setenforce 0'
    ignore_errors: True
  - name: disable selinux forever
    replace: path=/etc/selinux/config regexp="enforcing" replace="disabled"
  - name: mount cdrom
    mount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted
  - name: copy local yum configuration file
    copy: src=/etc/yum.repos.d/repo.bak/local.repo dest=/etc/yum.repos.d/local.repo
  - name: install apache
    yum: name=httpd state=latest
  - name: prepare httpd configuration file
    copy: src=/etc/ansible/playbook/httpd.conf dest=/etc/httpd/conf/httpd.conf
    notify: "reload httpd"
  - name: start apache
    service: name=httpd state=started enabled=yes
  handlers:
  - name: reload httpd
    service: name=httpd state=reloaded

1、运行playbook

bash 复制代码
ansible-playbook deamo1.yml
//补充参数:
-k(--ask-pass):用来交互输入ssh密码
-K(-ask-become-pass):用来交互输入sudo密码
-u:指定用户

2、定义、引用变量

三、使用playbook部署lnmp集群

bash 复制代码
- name: the first play for install nginx
  hosts: dbservers
  remote_user: root
  tasks:
  - name: disable firewwalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: '/usr/sbin/setenforce 0'
    ignore_errors: True
  - name: disable selinux forever
    replace: path=/etc/selinux/config regexp="enforcing" replace="disabled"
  - name: mount cdrom
    mount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted
  - name: copy local yum configuration file
    copy: src=/etc/yum.repos.d/nginx.repo  dest=/etc/yum.repos.d/nginx.repo
  - name: install nginx
    yum: name=nginx
  - name: prepare nginx configuration file
    copy: src=/etc/ansible/playbook/default.conf dest=/etc/nginx/conf.d/default.conf
  - name: start nginx
    service: name=nginx state=started enabled=yes
  - name: wordpress
    copy: src=/usr/share/nginx/html/wordpress  dest=/usr/share/nginx/html/

- name: mysql
  hosts: dbservers
  remote_user: root
  tasks:
  - name: remove mariadb
    shell: yum remove mariadb* -y
    ignore_errors: True
  - name: yum
    command: wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
  - name: install mysql57
    command: rpm -ivh mysql57-community-release-el7-11.noarch.rpm
  - name: change mysql-community-server
    shell: sed -i 's/gpgcheck=1/gpgcheck=0/' /etc/yum.repos.d/mysql-community.repo
  - name: install mysql-server
    yum: name=mysql-server
  - name: start mysql
    service: name=mysqld.service state=started enabled=yes
  - name: mysql congruation file
    copy: src=/etc/ansible/playbook/mysql.sh dest=/var/lib/mysql
  - name: echo password
    shell: grep "password" /var/log/mysqld.log | awk 'NR==1{print $NF}'  #在日志文件中找出root用户的初始密码
    register: mysql_password   #将初始密码导入到mysql_password的变量中
  - name: echo
    debug:
     msg: "{{ mysql_password }}"  #输出变量mysql_password的值
  - name: grant location
    shell:  mysql --connect-expired-password -uroot -p"{{ mysql_password['stdout'] }}" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';"
  - name: grant
    shell: mysql --connect-expired-password -uroot -pAdmin@123 -e "grant all privileges on *.* to 'root'@'%' identified by 'Admin@123456' with grant option;"
  - name: create database
    shell: mysql --connect-expired-password -uroot -pAdmin@123 -e "create database wordpress;"
  - name: grant
    shell: mysql --connect-expired-password -uroot -pAdmin@123 -e "grant all on wordpress.* to 'admin'@'%' identified by 'Admin@123456';"
  - name: grant
    shell: mysql --connect-expired-password -uroot -pAdmin@123 -e "grant all on wordpress.* to 'admin'@'localhost' identified by 'Admin@123456';"
  - name: flush
    shell: mysql --connect-expired-password -uroot -pAdmin@123 -e 'flush privileges;'
  - name: yum remove
    command: yum -y remove mysql57-community-release-el7-10.noarch

- name: php
  hosts: dbservers
  remote_user: root
  tasks:
  - name: yum rpm
    command: yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
    ignore_errors: true
  - name: yum-utils
    yum: name=yum-utils
  - name: yum-config
    command: yum-config-manager --enable remi-php74
  - name: list php
    command: yum list php
  - name: yilaibao
    command: yum -y install php  php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis
  - name: start php
    service: name=php-fpm state=started enabled=yes

将yum安装的nginx里面的配置文件进行修改,后传输到对应的远程主机

解压wordpress压缩文件,放入到对应的html网页目录底下

进行传输到远程主机里的网页页面目录上

使用浏览器进行访问测试

相关推荐
leo__5201 天前
自动化运维:使用Ansible简化日常任务
运维·自动化·ansible
风清再凯6 天前
自动化工具ansible,以及playbook剧本
运维·自动化·ansible
IT乌鸦坐飞机6 天前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
遇见火星20 天前
如何使用Ansible一键部署MinIO集群?
ansible
粥周粥20 天前
ANSIBLE
ansible
码农101号20 天前
Linux中ansible模块补充和playbook讲解
linux·运维·ansible
码农101号20 天前
Linux的Ansible软件基础使用讲解和ssh远程连接
ansible
烟雨书信21 天前
ANSIBLE运维自动化管理端部署
运维·自动化·ansible
碎碎-li21 天前
ANSIBLE(运维自动化)
运维·自动化·ansible
@donshu@24 天前
Linux运维-ansible-python开发-获取inventroy信息
linux·运维·ansible