首页 > 其他分享 >五月学习之Ansible playbook

五月学习之Ansible playbook

时间:2023-05-30 22:04:10浏览次数:34  
标签:rsync name Server state Ansible playbook 五月 file

一、playbook介绍

1、什么是playbook

playbook 是一个 由 yml 语法编写的文本文件,它由play 和 task 两部分组成。
play: 主要定义要操作主机或者主机组
task:主要定义对主机或主机组具体执行的任务,可以是一个任务,也可以是多个任务(模块)

总结: playbook 是由一个或多个 play 组成,一个play 可以包含多个 task任务。
可以理解为: 使用多个不同的模块来共同完成一件事情。

五月学习之Ansible playbook_Server

2、Playbook与Ad-Hoc

1) playbook 是对 AD-Hoc 的一种编排方式。
2) playbook 可以持久运行,而 Ad-Hoc 只能临时运行。
3) playbook 适合复杂的任务,而 Ad-Hoc 适合做快速简单的任务。
4) playbook 能控制任务执行的先后顺序。

3、Playbook书写格式

playbook 是由 yml 语法书写,结构清晰,可读性强,所以必须掌握 yml 语法
语法                         描述
缩进                         YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用tabs
冒号                         以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线                       表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表。

4、示例

1.下面我们一起来编写一个playbook文件,playbook起
步
host: 对哪些主机进行操作
remote_user: 我要使用什么用户执行
tasks: 具体执行什么任务
[root@manager ~]# cat f1.yml
---
- hosts: all
  remote_user: root
  vars:
    file_name: xuliangwei
  tasks:
    - name: Create New File
      file: name=/tmp/{{ file_name }} state=touch
2.执行playbook,注意观察执行返回的状态颜色:
红色:表示有task执行失败,通常都会提示错误信息。
黄色:表示远程主机按照编排的任务执行且进行了改变。
绿色:表示该主机已经是描述后的状态,无需在次运行。

二、playbook案例实战

1、Ansible部署NFS示例

[root@manager project]# cat nfs_server.yaml 
- hosts: webservers
  tasks:
    - name: Installed NFS Server
      yum:
        name: nfs-utils
        state: present

    - name: COnfigure NFS Server
      copy:
        src: ./exports.j2
        dest: /etc/exports
        owner: root
        group: root
        mode: '0644'
      notify: Restart NFS Server

    - name: Create SHare DIrectory 
      file:
        path: /ansible
        state: directory
        owner: www
        group: www
        recurse: yes

    - name: Systemd Start NFS Server
      systemd:
        name: nfs
        state: started

  handlers:
    - name: Restart NFS Server
      systemd:
        name: nfs
        state: restarted


- hosts: 172.16.1.8
  tasks:
    - name: Mount NFS data
      mount:
        src: 172.16.1.7:/ansible
        path: /bb
        fstype: nfs
        opts: defaults
        state: mounted

echo "/data 172.16.1.0/24(rw,sync)" > exports.j2

检查语法
ansible-playbook nfs.yml --syntax-check

2、Ansible部署Httpd示例

cat web.yml
- hosts: web
  tasks:
    - name: Installed Httpd Server
      yum: name=httpd state=latest
    - name: Started Httpd Server
      service: name=httpd state=started enabled=yes
    - name: Started Firewalld Server
      service: name=firewalld state=started enabled=yes
    - name: Copy Httpd Web Page
      copy: content='This is Web Page' dest=/var/www/html/index.html
    - name: Configure Firewalld Permit Http
      firewalld: service=http immediate=yes permanent=yes state=enabled

3、Ansible部署Rsync示例

cat rsyncd.conf 
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path =/backup

cat rsync.yaml 
- hosts: rsync_server
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed
    - name: 02-create rsyncd.conf
      copy: src=/etc/ansible/file/rsyncd.conf dest=/etc
    - name: 03-create user rsync
      user: name=rsync create_home=no shell=/sbin/nologin
    - name: 04-create /backup directory
      file: path=/backup state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
    - name: 06-start rsync service
      service: name=rsyncd state=started enabled=yes

- hosts: rsync_client
  tasks:
    - name: 01-installl rsync
      yum: name=rsync state=installed
    - name: 02-create password file
      copy: content=oldboy123 dest=/etc/rsync.password mode=600
    - name: 03-create test file
      file: dest=/tmp/test.txt state=touch
    - name: 04-test rsync sending
      shell: rsync -avz /tmp/test.txt [email protected]::backup --password-file=/etc/rsync.password

4、Ansible部署LAMP示例

使用 AnsiblePlaybook 方式构建 LAMP 架构,具体
操作步骤如下:
1.使用yum安装 httpd、php、php-mysql、mariadb、firewalld 等
2.启动 httpd、firewalld、mariadb 等服务
3.添加防火墙规则,放行 http 的流量,并永久生效
6.使用 get_url 下载http://fj.xuliangwei.com/public/index.php文件

1.针对主机进行分组管理,分组名称定义为 web
[root@m01 ~]# cat /etc/ansible/hosts
[web]
172.16.1.7
172.16.1.8
2.编写 LAMP 架构对应的 playbook 文件
cd /etc/ansible/playbook/
cat lamp.yml
---
- hosts: web
  tasks:
    - name: Installed LAMP Server
      yum: name=httpd,php,php-mysql,mariadb state=latest
    - name: Started Httpd Server
      service: name=httpd state=started enable=yes
    - name: Started Firewalld Server
      service: name=httpd state=started enable=yes
    - name: Get Url Index.php File
      get_url: url=http://fj.xuliangwei.com/public/index.php dest=/var/www/html/index.php
    - name: Configure Firewalld Permit Http
      firewalld: service=http immediate=yes permanent=yes state=enable

ansible-playbook --syntax-check lamp.yml

5、Playbook部署集群架构

1.使用多台节点部署 kodcloud 网盘
2.使用 Nginx 作为负载均衡统一调度
3.使用 Redis 实现多台节点会话保持

cat /etc/ansible/hosts
[dbservers]
172.16.1.5
[lbservers]
172.16.1.6
[webservers]
172.16.1.7
172.16.1.8

4、部署Redis
cat install_redis.yml
- hosts: dbservers
  tasks:
    - name: Installed Redis Server
      yum:
        name: redis
        state: present
    - name: Configure Redis Server
      template:
        src: conf/redis.j2
        dest: /etc/redis.conf
        owner: redis
        group: root
        mode: 0640
      notify: Restart Redis Server
    - name: Systemctl Redis Server
      systemd:
        name: redis
        state: started
        enabled: yes
  handlers:
    - name: Restart Redis Server
      systemd:
        name: redis
        state: restarted

5、部署PHP环境

6、部署负载均衡

标签:rsync,name,Server,state,Ansible,playbook,五月,file
From: https://blog.51cto.com/u_13236892/6382290

相关文章

  • 使用Ansible 收集服务器元数据信息到CMDB数据库
    安装必要组件:pipinstallansible-cmdbyuminstall-ymariadbMySQL-python创建一个Ansibleplaybook文件,例如collect_facts.yml,并添加以下内容:-name:CollectserverfactsintoCMDBhosts:allgather_facts:truebecome:truevars:db_host:"192.168.0......
  • 面试总结五月三十日
    vue路由的两种模式Vue路由模式hash和history,简单讲一下Hash模式地址栏中有#,history没有,history模式下刷新,会出现404情况,需要后台配置使用JavaScript来对loaction.hash进行赋值,改变URL的hash值可以使用hashchange事件来监听hash值的变化HTML5提供了History......
  • 征图-网安人的五月生存图鉴
    征图-网安人的五月生存图鉴日常整活......
  • Ansible 安装与ssh密钥配置
    环境系统IP名称CentOS7.610.22.86.71管理机CentOS7.610.22.86.72被控机CentOS7.610.22.86.73被控机CentOS7.610.22.86.74被控机安装#yum源[root@localhost~]#cat/etc/yum.repos.d/epel.repo[epel]name=ExtraPackagesforEnterpriseLi......
  • Ansible系统-模块-cron学习整理
    1、常规性用法ansibletest-xxxx-01-vm-mcron-a'minute=30hour=15name="ansiblecrontabdemo"job="bash/tmp/1.sh"'默认是写到 root 用户的crontab中去,可以通过如下两种方式查看写入结果1)登录到目标主机,切换到对应的用户执行如下命令crontab-l-uusername比如上面的......
  • 五月读书笔记三《人件集》
    通过继续阅读《人件集》了解到在一般情况下,大家都认为技术决策所依据的都是技术性因素,诸如事实、可测量的数值、应用中需要考虑的事项等。但实际情况是,诸如感觉、意见、直觉、偏见等,都会对决策的制定或者问题的解决产生影响,这些都是人在做事情时所不可避免的因素。尽管有些人试......
  • 武汉星起航:欧洲站五月运营攻略分享,卖家应该如何布局
    五月是亚马逊欧洲站点运营的重要时期,为了最大化销售和利润,卖家需要制定有效的运营策略。以下是武汉星起航整理的一些关键的运营建议,帮助您在五月取得成功:产品选品:五月是许多国家的节假日和庆祝活动的季节,因此选择与这些活动相关的产品是明智的。了解不同国家的节日和特殊活动,选择热......
  • 五月学习之Ansible ad-hoc和常用模块
    一、Ansiblead-hoc1、ad-hoc是什么ad-hoc简而言之就是临时命令,执行完即结束,并不会保存应用场景1:查看多台节点的进程是否存在应用场景2:拷贝指定的文件至本地2、ad-hoc命令使用ansible'groups'-mcommand-a'df-h'3、ad-hoc执行过程1.加载ansible配置文件,默认/etc/ansible/a......
  • 自动化工具ansible的部署和使用
    (文章目录)前言Ansible是一种自动化工具,可用于部署、配置和管理计算机系统。它是基于Python的开源软件,具有易于使用、可靠、灵活和可扩展等特点,被广泛应用于IT管理领域。Ansible提供了一个简单而强大的语言,用于描述系统如何配置和管理,称为“Playbook”。它使用SSH协议作为通信......
  • Ansible_Runner run函数代码详解
    需求背景:随着第一版远程执行发布使用paramiko模块进行远程调用脚本的稳定,开始着手第二版关于使用ansiblerunner执行远程发布任务paramiko和ansiblerunner各自的优缺点:Paramiko:Paramiko是一个Python的SSH库,用于在远程主机上执行命令。优点:直接通过SSH连接到远程主机,无需......