ansible小试牛刀

看完ansible的基础,然后写了三个简单部署的YML,分别是安装nginx、mysql、tomcat+jdk

这里贴上源码吧,已经测试通过了

tomcat:

/etc/ansible/roles/tomcat/
├── defaults
│   └── main.yml
├── files
│   ├── apache-tomcat-7.0.52.tar.gz
│   ├── apr-1.5.1.tar.bz2
│   ├── apr-util-1.5.4.tar.bz2
│   ├── jdk-7u55-linux-x64.tar.gz
│   └── profile
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

主文件 tomcat.yml:

cat tomcat.yml 
---
- hosts: test
  
  roles:
    - tomcat

var/main.yml

cat vars/main.yml 
---
# vars file for /etc/ansible/roles/tomcat

jdk: jdk-7u55-linux-x64.tar.gz
tomcat: apache-tomcat-7.0.52.tar.gz
apr: apr-1.5.1.tar.bz2
apr_util: apr-util-1.5.4.tar.bz2
soft_path: /opt/soft/

tasks/main.yml

---
# tasks file for /etc/ansible/roles/tomcat
- name: yum install
  yum: name="{{item}}" state=installed
  with_items: [‘gcc‘,‘gcc-c++‘,‘make‘,‘cmake‘,‘openssl-devel‘]

- name: mkdir soft path
  file: path={{soft_path}} state=directory

- name: copy tomcat
  copy: src=files/{{tomcat}} dest={{soft_path}}

- name: copy jdk
  copy: src=files/{{jdk}} dest={{soft_path}}

- name: copy apr
  copy: src=files/{{apr}} dest={{soft_path}}

- name: copy apr-util
  copy: src=files/{{apr_util}} dest={{soft_path}}

- name: copy profile
  copy: src=files/profile dest=/etc backup=yes

- name: tar tomcat
  unarchive: src={{soft_path}}{{tomcat}} dest=/opt copy=no

- name: touch tomcat link
  file: src=/opt/apache-tomcat-7.0.52 dest=/opt/tomcat state=link

- name: tar jdk
  unarchive: src={{soft_path}}{{jdk}} dest=/opt copy=no

- name: touch jdk link
  file: src=/opt/jdk1.7.0_55 dest=/opt/java state=link

- name: tar apr
  unarchive: src={{soft_path}}{{apr}} dest={{soft_path}} copy=no

- name: install apr
  shell: chdir={{soft_path}}apr-1.5.1/ ./configure --prefix=/opt/apr && make && make install

- name: tar apr_util
  unarchive: src={{soft_path}}{{apr_util}} dest={{soft_path}} copy=no

- name: install apr_util
  shell: chdir={{soft_path}}apr-util-1.5.4/ ./configure --prefix=/opt/apr-util --with-apr=/opt/apr && make && make install

- name: tar tomcat-native
  unarchive: src=/opt/tomcat/bin/tomcat-native.tar.gz dest=/opt/tomcat/bin/ copy=no

- name: install tomcat-native
  shell: chdir=/opt/tomcat/bin/tomcat-native-1.1.29-src/jni/native ./configure --prefix=/opt/apr --with-apr=/opt/apr --with-java-home=/opt/java --with-ssl=yes && make && make install
  notify:
    - reload profile

handlers/main.yml

---
# handlers file for /etc/ansible/roles/tomcat
- name: reload profile
  shell: source /etc/profile

-------------------------------------------------------------------------------------------

nginx:

/etc/ansible/roles/nginx/
├── defaults
│   └── main.yml
├── files
│   ├── nginx-1.8.0.tar.gz
│   ├── openssl-1.0.0.tar.gz
│   ├── pcre-8.37.tar.gz
│   └── zlib-1.2.8.tar.gz
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

主文件nginx.yml

---

- hosts: test

  roles:
    - nginx

vars/main.yml

---
# vars file for /etc/ansible/roles/nginx

nginx: nginx-1.8.0.tar.gz  
openssl: openssl-1.0.0.tar.gz  
pcre: pcre-8.37.tar.gz  
zlib: zlib-1.2.8.tar.gz
soft_path: /opt/soft/

tasks/main.yml

---
# tasks file for /etc/ansible/roles/nginx

- name: yum install
  yum: name={{item}} state=installed
  with_items: [‘gcc‘,‘gcc-c++‘,‘make‘,‘cmake‘]

- name: copy nginx
  copy: src=files/{{nginx}} dest={{soft_path}}

- name: copy openssl
  copy: src=files/{{openssl}} dest={{soft_path}}

- name: copy zlib
  copy: src=files/{{zlib}} dest={{soft_path}}

- name: copy pcre
  copy: src=files/{{pcre}} dest={{soft_path}}

- name: tar pcre
  unarchive: src={{soft_path}}{{pcre}} dest={{soft_path}} copy=no

- name: install pcre
  shell: chdir={{soft_path}}pcre-8.37 ./configure && make && make install

- name: tar openssl
  unarchive: src={{soft_path}}{{openssl}} dest={{soft_path}} copy=no

- name: install openssl
  shell: chdir={{soft_path}}openssl-1.0.0 ./config && make && make install

- name: tar zlib
  unarchive: src={{soft_path}}{{zlib}} dest={{soft_path}} copy=no

- name: install zlib
  shell: chdir={{soft_path}}zlib-1.2.8 ./configure && make && make install

- name: groupadd www
  group: name=www 

- name: useradd www
  user: name=www group=www

- name: tar nginx
  unarchive: src={{soft_path}}{{nginx}} dest={{soft_path}} copy=no

- name: install nginx
  shell: chdir={{soft_path}}nginx-1.8.0 ./configure --prefix=/opt/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/opt/soft/openssl-1.0.0 --with-pcre=/opt/soft/pcre-8.37 --with-zlib=/opt/soft/zlib-1.2.8 && make && make install

-------------------------------------------------------------------------------------------

mysql:

/etc/ansible/roles/mysql/
├── defaults
│   └── main.yml
├── files
│   ├── my.cnf
│   ├── mysql
│   └── mysql-5.6.13.tar.gz
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

主文件mysql.yml

---

- hosts: test

  roles:
    - mysql

vars/main.yml

---
# vars file for /etc/ansible/roles/mysql

mysql: mysql-5.6.13.tar.gz
soft_path: /opt/soft/

tasks/main.yml

---
# tasks file for /etc/ansible/roles/mysql

- name: yum install
  yum: name="{{item}}" state=installed
  with_items: [‘gcc‘,‘gcc-c++‘,‘make‘,‘cmake‘,‘ncurses-devel‘,‘libaio‘,‘bison‘]
  
- name: copy mysql
  copy: src=files/{{mysql}} dest={{soft_path}}

- name: copy my.cnf
  copy: src=files/my.cnf dest=/etc

- name: tar mysql
  unarchive: src={{soft_path}}{{mysql}} dest={{soft_path}} copy=no

- name: groupadd
  group: name=mysql

- name: useradd
  user: name=mysql group=mysql 

- name: install mysql
  shell: chdir={{soft_path}}mysql-5.6.13 cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci && make && make install

- name: mkdir log_path
  file: path=/opt/mysql/data/log state=directory

- name: chown mysql1
  file: path=/opt/mysql/ owner=mysql group=mysql recurse=yes

- name: mysql_install_db
  shell: chdir=/opt/mysql/scripts/ ./mysql_install_db --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data

- name: chown mysql2
  file: path=/opt/mysql/ owner=root recurse=yes

- name: chown data
  file: path=/opt/mysql/data/ owner=mysql recurse=yes

- name: copy mysql_init
  copy: src=files/mysql dest=/etc/init.d/

- name: chmod mysql_init
  file: path=/etc/init.d/mysql mode=0755
时间: 2024-10-08 23:43:02

ansible小试牛刀的相关文章

ansible详解(一)----小试牛刀

ansible安装 [[email protected] ~]# yum install ansible -y 定义主机与组 [[email protected] ~]# vim /etc/ansible/hosts  #添加主机,并在所配置的主机上与ansible建立互信 192.168.116.138 192.168.116.139 192.168.116.139:7022 #定义一个ssh端口为7022的主机 juserver ansible_ssh_port=22  ansible_ss

Linux red hat 安装ansible

今日对Linux 系统是Red Hat Enterprise Linux Server release 6.5 (Santiago)对ansible进行安装. 由于系统的源为yum源,所以使用yum install ansible 进行安装,但是报错.如图.(这个错误是yum源没有注册到red hat 系统). yum源不能安装,所以换了一个思路.使用pip安装.pip是依赖python安装的. 1.检查Python版本 Python -v 检查出来为Python 2.6.6 2.检查pip 版

使用ansible快速部署一个主流的Web架构

拓扑: 拓扑说明: 两台服务器配置Keepalived+Nginx做双主模型的Load Balance,主机名为lb1和lb2 两台服务器配置lamp,用于处理动态资源请求,主机名为lamp1和lamp2 两台服务器配置varnish作为静态资源缓存服务器,主机名为varnish1和varnish2 两台服务器配置Nginx用于处理静态资源请求 额外需要一台服务器安装ansible,使用ansible批量管理所有服务器 关键技术点: 1. Keepalived配置了邮件报警脚本,当节点的状态发生

Ansible

一.ansible简介

自动化运维工具ansible源码安装方法

1.首先查看python版本 [[email protected] ~]# python -V Python 2.6.6 注意安装ansible的时候,必须python的版本为2.6以上. 2.安装ansible 2.1 安装pycrypto模块 https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz # tar xvzf pycrypto-2.6.1.tar.gz # cd pycrypto-2.6.1

Ansible自动化部署之Play book的使用

一.Ansible Play book 的使用 1.Playbook的核心元素 2.Play books简介 3.Play book的基础 (1)主机与用户 (2)tasks任务列表 (3)task定义示例 (4)Play book使用示例 4.Play book变量的使用 (1)变量的定义示例 5.Play book中notifyh和handlers的使用. 示例:触发 6.Play book中tags的使用 7.tepmplates 模板的使用 jinja2语言 示例:模板安装nginx w

Ansible自动化部署之ROLES

一.ROLES 角色 1.目录层级结构 2.角色调用 3.层级结构展示 示例1:利用ansible角色安装nginx 示例2:变量调用 示例3:在playbook调用角色方法:传递变量给角色 示例4:条件测试角色调用 示例5:角色安装 示例6:角色变量调整memcached内存大小 一.ROLES 角色 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web.db.ha 时或不同服务器组合不同的应用就需要写多个yml文件.很难实现灵活的调用.. roles 用于层次性.结构化地组织pla

ansible自动化部署之第三方模块添加(时间计时模块)

一.时间计时模块 ansible中可以加入一个计时模块在执行ansible-playbook时显示执行时长.方便使用. 1.配置方法 cd /etc/ansible mkdir callback_plugins cd callback_plugins wget https://raw.githubusercontent.com/jlafon/ansible-  \                     profile/master/callback_plugins/profile_tasks.

ansible安装

https://galaxy.ansible.com/  在线playbook分享平台 安装控制机准备: python2.6或者以上 paramiko模块 PyYAML Jinja2 httplib2 控制机的系统版本可以是:RedHat Debian CentOS OSX BSD等 查看被管节点如果类UNIX系统,则需要Python2.4或者以上版本 如果是windows ,则需要PowerShell3.0并且授权远程管理 安装Ansible 1.从GItHUb安装 提取Ansible代码 g