ansible教程

ansible教程

一.yum安装ansible

1.ansible简介
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。无客户端。
2.域名解析
#ansible服务端配置,客户端无需配置
vim /etc/hosts
192.168.0.151 ansible
192.168.0.152 host1
192.168.0.153 host2
3.ansible服务端安装
yum install -y epel-release
yum install -y ansible
4.检测是否安装完成
#查询配置文件
rpm -qc ansible
ansible --help
5.配置免密登录
#生成免密文件
ssh-keygen
#生成之后查看生成的秘钥
ll .ssh/
#将秘钥发送到客户机
ssh-copy-id 192.168.0.152

二.源码编译安装ansible

三.ansible基础

1.定义主机清单
vim /etc/ansible/hosts 
[webservers]
host1
host2
2.测试连通性
#-m 指定模块。什么功能
#ping只是其中一个模块,还有shell,yum等等
ansible localhost -m ping
3.简洁输出
#简介输出
ansible localhost -m ping -o
#非免密操作
ansible host2 -m ping -u root -k -o
4.去掉(yes/no)的询问
vim /etc/ssh/ssh_config
StrictHostKeyCheking no
systemctl restart sshd

四.Inventory-主机清单

1.增加主机组
vim /etc/ansible/hosts
[webserver]
host1
host2
ansible webserver -m ping -o
2.增加用户名 密码
vim /etc/ansible/hosts
[webserver]
host[1:2]  ansible_ssh_user='root' ansible_ssh_pass='666666'
ansible webserver -m ping -o
3.增加端口
vim /etc/ansible/hosts
[webserver]
host[1:2]  ansible_ssh_user='root' ansible_ssh_pass='666666' ansible_ssh_port='2222'
4.组:变量
#ansible内部变量可以帮助我们简化主机清单的设置
vim /etc/ansible/hosts
[webserver]
host[1:2]  
[webserver:vars]
ansible_ssh_user='root' 
ansible_ssh_pass='123456'
5.子分组
#将不同的分组进行组合
vim /etc/ansible/hosts
[apache]
host[1:2]
[nginx]
host[3:4]
[webserver:children]
apache
nginx
[webserver:vars]
ansible_ssh_user='root' 
ansible_ssh_pass='123456'

五.Ad-Hoc-点对点模式

1.shell模块
#使用shell模块查看主机信息
ansible webserver -m shell -a'hostname' -o
#使用shell模块安装httpd
ansible webservers -m shell -a'yum -y install httpd' -o
2.复制模块
ansible webservers -m copy -a 'src=/tmp/1.txt dest=/tmp owner=root group=root mode=755'
#如果存在备份之前的
ansible webservers -m copy -a 'src=/tmp/1.txt dest=/tmp owner=root group=root mode=755 backup=yes'
3.用户模块
#创建用户
ansible webservers -m user -a 'name=he_ber state=present'
#修改密码
echo '123456'|opensd passwd -1 -stdin#生成密码
ansible webservers -m user -a'name=he_ber password="$1$4GUXJ/dE$Ruum9mCqQfnarcq1cp0G81"'
#删除用户
ansible webservers -m user -a'name=he_ber state=absent'
4.软件包管理
#升级所有包
ansible webservers -m yum -a'name="*" state=latest'
#安装Apache
ansible webservers -m yum -a'name="httpd" state=latest'
#卸载Apache
ansible webservers -m yum -a'name="httpd" state=removed'
5.服务模块
#启动服务并开机自启
ansible webservers -m service -a'name=httpd state=started enabled=yes'
#停止服务
ansible webservers -m service -a'name=httpd state=stopped'
#重启服务
ansible webservers -m service -a'name=httpd state=restarted'
6.文件模块
#创建文件
ansible webservers -m file -a'path=/tmp/2.txt mode=777 state=touch'
#创建文件夹
ansible webservers -m file -a'path=/tmp/he_ber mode=777 state=directory'
7.收集模块
#收集机器信息
ansible webservers -m setup
#指定参数收集
ansible webservers -m setup -a'filter=ansible_all_ipv4_addresses'

六.YAML

1.语法
#列表
list;
   -list1
   -list2
#字典
Dicts:
   k:v
   k:v
2.例
#通过YAML编写一个简单的副本,完成web的部署、配置、启动的全过程
vim apache.yaml
- hosts: webservers
  tasks:
  - name: install apache packages
    yum: name=httpd state=present
  - name: copy apache conf
    copy: src=/apache/httpd.conf dest=/etc/httpd/conf/httpd.conf
  - name: ensure apache is running
    service: name=httpd state=started enabled=yes
#对剧本进行检查
ansible-playbook apache.yaml --syntax-check
#列出任务
ansible-playbook apache.yaml --list-tasks
#列出主机
ansible-playbook apache.yaml --list-hosts
#执行
ansible-playbook apache.yaml

七.Role

1.目录结构
#准备目录
mkdir  roles/nginx/{files,handlers,tasks,templates,vars}  -p
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
echo 1234 >roles/nginx/files/index.html
yum  install -y nginx  && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2
2.任务编写
vim roles/nginx/tasks/main.yaml
---
- name: install epel-release pasckge
  yum: name=epel-release state=latest
- name: install nginx packge
  yum: name=nginx state=latest
- name: copy index.html
  copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: copy nginx.conf template
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  notify: restart nginx
- name: make sure nginx service running
  service: name=nginx state=started enabled=yes

3.准备配置文件
vim roles/nginx/templates/nginx.conf.j2 
#设置未知参数为变量
worker_processes {{ ansible_processor_cores }};
worker_connections {{ worker_connections }};
4.编写变量
vim roles/nginx/vars/main.yaml
#自定义变量
worker_connections: 10240
5.编写处理程序
vim roles/nginx/handlers/main.yaml 
---
- name: restart nginx
  service: name=nginx state=restarted
6.编写剧本
vim roles/site.yaml 
- hosts: webservers
  roles:
  - nginx
7.实施
#验证脚本
ansible-playbook site.yaml --syntax-check
#执行
ansible-playbook site.yaml
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!关于 Ansible教程,我可以为您提供一些基本的信息。Ansible 是一种自动化工具,用于配置和管理计算机系统。它通过使用简单易懂的语法和模块化的设计,使得自动化任务变得更加容易。 以下是一个简单的 Ansible 教程: 1. 安装 Ansible:您可以从官方网站或使用包管理工具(如 apt、yum 或 brew)安装 Ansible。 2. 编写 Ansible 配置文件:创建一个名为 "ansible.cfg" 的文件,其中包含 Ansible 配置选项。您可以指定要使用的远程主机、身份验证方式等。 3. 创建主机清单文件:创建一个名为 "inventory" 的文件,其中列出了要管理的主机及其相关信息。您可以指定主机的 IP 地址、用户名、密码等信息。 4. 编写 Playbook:Playbook 是 Ansible 的核心组件之一,它定义了要在远程主机上执行的任务和配置。Playbook 使用 YAML 格式编写,并且可以包含多个任务和变量。 5. 编写任务:在 Playbook 中,您可以定义各种任务,例如安装软件包、配置文件、启动服务等。每个任务由一个或多个模块组成,这些模块负责执行实际的操作。 6. 运行 Playbook:使用 "ansible-playbook" 命令运行 Playbook。该命令将读取配置文件和主机清单文件,并在远程主机上执行指定的任务。 这只是一个简单的介绍,Ansible 还有很多高级功能和概念,如变量、条件语句、循环等。您可以参考 Ansible 官方文档或在线教程来深入了解。 希望这些信息对您有所帮助!如果您有任何其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值