group模块参数:
name参数:必须参数,用于指定组名称。
state参数:用于指定组的状态,两个值可选,present,absent,默认为 present,设置为absent 表示删除组。
gid参数:用于指定组的gid。如果不指定为随机
system参数:如果是yes为系统组。–可选
总结 要查看一下 你的 包 大小 我做这个发生一件事情,步骤全是对的 宝是0
k 空包 一直报错
步骤;编写 playbook
[root@web1 playbook2]# vim /etc/ansible/hosts
[root@web1 playbook2]# vim play.yml
语法;
- hosts: web2
user: root
tasks:
- name: 创建一个组
group: name=mygrp3 gid=2105 system=true
- name: 创建一个用户
user: name=mygrp3 group=mygrp3 system=yes
- hosts: web3
user: root
tasks:
- name: 安装 apache
yum: name=httpd state=installed
- name: 启动 apache
service: name=httpd state=started
步骤;# ansible-playbook --syntax-check play.yml
playbook: play.yml
步骤;# ansible-playbook play.yml
先判断when条件是否成立
语法;
when 判断模块
- hosts: webss
user: root
tasks:
- name: 创建文件
file: path=/root/xiaotian.txt state=touch
- name: when 判断
shell: echo "2103加油" >> /root/xiaotian.txt #2在执行这个模块命令
when: ansible_hostname == "web2" #1.先条件执行,先判断when是否成立,如果成立则执行上面命令,ansible-web1指的是被控节点上真正的主机名称
[root@web1 playbook2]# ansible-playbook --syntax-check when.yml
gather_facts参数:指定了在任务部分执行前,是否先执行setup模块获取主机相关信息,默认值为true,改成false之后在执行过程中不会搜集主机相关信息。
步骤1;创建一个 变量文件,我是创建好了直接查看的
[root@web1 playbook2]# cat files.yml
- user: "jack" #user是自定义变量名称,“jack”是变量值
- src_path: "/root/a.txt" #同上
- dest_path: "/opt/
- hosts: webss
user: root
gather_facts: false #是否执行setup模块,搜集对方机器的信息
vars_files: #自定义变量 调用变量文件
- /root/playbook2/files.yml
tasks:
- name: 创建用户
user: name={{ user }}
- name: 拷贝 文件
copy: src={{ src_path }} dest={{ dest_path }}
语法;
检测语法 开始运行
步骤;# ansible-playbook --syntax-check 3user.yml
roles则是在ansible中,playbooks的目录组织结构。而模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。
实战目标:通过role远程部署nginx并配置
目录顺序:
role_name/ —角色名称=目录
files/:存储一些可以用copy调用的静态文件。
tasks/: 存储任务的目录,此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由(与notify:名字相同,方便notify通知执行下一条命令)通过main.yml进行“包含”调用;
vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;
templates/:存储由template模块调用的模板文本; (也可以调用变量)
site.yml:定义哪个主机应用哪个角色
下载安装包; yum install -y tree
#roles为自带目录,如果不存在可以创建
步骤1;先创建目录 和目录下面的文件
[root@web1 roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}
[root@web1 roles]# ls
nginx site.yml
[root@web1 roles]# touch nginx/{handlers,tasks,vars}/main.yml
步骤2; 先输入 nginx 的 网页打开页面
[root@web1 roles]# cat nginx/files/index.html
2103云计算冲冲冲
安装nginx 并配置模块
yum install -y nginx && cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2
步骤3;
编写 tasks里面的main.yml文件 就是任务
- name: 安装 epel源
yum: name=epel-release state=latest
- name: 开始安装nginx
yum: name=nginx state=latest
- name: 拷贝 你修改的nginx文件
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
- name: 拷贝 你配置的nginx 主页
copy: src=/etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html
notify: start nginx
步骤4;
准备配置文件,修改 你想改的端口 或者是是允许多少人链接
[root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
修改成如下内容。自定义变量 端口我这里改成 8080
编写变量
[root@ansible-server roles]# vim nginx/vars/main.yml #添加如下内容
worker_connections: 2
步骤5;
编写 触发器
[root@ansible-server roles]# vim nginx/handlers/main.yml #编写如下内容
步骤6
编写 剧本 就是针对谁谁谁 执行的
7.编写剧本
[root@ansible-server roles]# vim site.yml
---
- hosts: web2
user: root
roles:
- nginx
控住节点 先把包 上传 然后进行解压
tar -xvzf apache-tomcat-8.5.45.tar.gz -C /usr/local/
这里先做一件事情 ,刷新变量 放到文件里面
/usr/local/tomcat/bin 拷贝这个文件到
cp startup.sh /root /root
vim startup.sh
编辑这个文件 加一个刷新变量的话语
开始编写 脚本
语法
- hosts: web2
user: root
tasks:
- name: 拷贝jdk
copy: src=/root/jdk-8u211-linux-x64.tar.gz dest=/opt
- name: 拷贝tomcat
copy: src=/root/apache-tomcat-8.5.45.tar.gz dest=/opt
- name: 解压 jdk
shell: tar xf /opt/jdk-8u211-linux-x64.tar.gz
- name: 移动并改名字
shell: mv jdk1.8.0_211 /usr/local/java
- name: 添加环境变量
shell: echo "JAVA_HOME=/usr/local/java" >> /etc/profile
- name: 配置环境变量
shell: echo "PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile
- name: 解压tomcat
shell: tar xf /opt/apache-tomcat-8.5.45.tar.gz
- name: 移动并改名字
shell: mv apache-tomcat-8.5.45 /usr/local/tomcat
- name: 拷贝文件启动刷新变量
copy: src=/root/startup.sh dest=/usr/local/tomcat/bin/startup.sh
notify: start tomcat
handlers:
- name: start tomcat
shell: nohup /usr/local/tomcat/bin/startup.sh &
开始检测语法
[root@web1 ~]# ansible-playbook --syntax-check tomcat.yml
开始 运行
节点 检测一下端口 看看有没有起来
netstat -tanlp |grep 80
总结 要查看一下 你的 包 大小 我做这个发生一件事情,步骤全是对的 宝是0
k 空包 一直报错
可以做完上面的 把 tomcat 关闭 然后在做这一步 也可以 直接一步到位 看下面截图
语法;
- hosts: web3
user: root
tasks:
- name: 传送 jenkins.war
copy: src=/root/jenkins.war dest=/usr/local/tomcat/webapps
- name: 启动tomcat
shell: nohup /usr/local/tomcat/bin/startup.sh &