ansible基础模块

ansible基础

  • ansible
  • 1.command
  • 2.shell
  • 3.yum:
  • 4.copy
  • 5.service:
  • 6.group
  • 7.user
  • 8.file
  • 9.mount
  • 10.script
  • 11.cron定时计划任务
  • 12.unarchive压缩模块
  • 用ansible安装httpd
    • 一. 两台主机
    • 二. 安装httpd
      • 三. 用ansible剧本给web主机安装httpd

ansible

ansible:管理配置系统,是当下最流行的批量化自动化运维工具之一.
1.Ansible的作用

批量部署,服务安装,日常备份

2.Ansible官方文档

https://docs.ansible.com/ansible/latest/index.html

3.Ansible的特性

(1)无客户端软件,通过ssh远程管理
(2)安装后不需要启动服务
(3)依赖大量的Python模块扩展功能
(4)配置文件:/etc/ansible/ansible.cfg

4.Ansible基础架构

(1).连接插件(connecter plugins):用来连接主机,连接被管理端 核心模块(core
(2).modules:连接主机,实现操作,依赖于具体模块来执行 自定义模块:用户自己开发的功能模块
(3).剧本(playbook):将多个任务组合成一个剧本,由ansible自动批量执行
(4). 主机清单(host inventory):定义ansible管理的客户端主机范围,中大型环境我们有可能需要使用静态inventory或者动态主机清单来生成我们所需要执行的目标主机

Ansible的命令格式:

ansible 主机清单名 -m 调用的模块 -a 动作命令

5.ansible的常用模块

1.command

仅支持简单语法命令,但语句中不能包含管道符等复杂元素

ansible web -m command -a “hostname”

2.shell

command升级版,支持复杂语句,但不支持别名

ansible web -m shell -a “echo 123 |passwd --stdin zhangsan”

3.yum:

安装某些服务的模块

ansible web -m yum -a “name=httpd state=installed”
注释:name 后面的httpd是安装的软件包名,多个软件","分开
state 服务状态:
installed,present 安装软件包
removed,absent 卸载软件包
latest 安装最新软件包

4.copy

ansible all -m copy -a “src=/etc/hosts dest=/etc/hosts backup=yes”
注释: src: 源文件路径
dest: 目标文件路径
backup 覆盖到目标文件前,是否提前备份
content:添加文件内容
group 指定属组
owner 指定属主
mode 指定权限
(3)创建目录,并赋权,更改属主属组
ansible all -m file -a “path=/backup owner=root group=root recurse=yes mode=777”
(4)在源文件a.txt中写入a:1:
ansible rsync -m copy -a “content=‘a:1’ dest=/a.txta.txtowner=root group=root mode=600”
ansible rsync -m shell -a “ls -l /etc/rsync.password”
ansible rsync -m shell -a “cat /etc/rsync.password”

5.service:

用于开启某些服务的模块

ansible web -m service -a “name=httpd state=stopped enabled=yes”
注释: name 指定服务名 state 指定服务运行状态
started 开启服务
stopped 关闭服务
reloaded 重载服务
restarted 重启服务
enabled 是否开机自启

6.group

在所有清单主机上创建组www,gid 666
ansible all -m group -a “name=www gid=666”

在所有清单主机删除组www
ansible all -m group -a “name=www gid=666 state=absent”
absent为删除

7.user

ansible all -m user -a “name=www”
ansible web -m shell -a “echo 123 | passwd --stdin www”

8.file

创建目录,并赋权,更改属主属组
ansible rsync -m file -a “path=/backup owner=root group=root recurse=yes mode=777”
创建文件
ansible rsync -m file -a “path=/test.txt owner=root group=root state=touch mode=777”

9.mount

挂载nfs目录到web下的/var/www/html
ansible web -m mount -a “src=192.168.1.113:/nfs path=/var/www/html fstype=nfs state=mounted”
注释: state 挂载状态
mounted 挂载
unmounted 卸载

10.script

在ansible上编写任意测试脚本,让指定主机执行:
ansible web -m script -a “/root/test.sh”

11.cron定时计划任务

 ansible all -m cron -a "name='a.txt'  minute=*/5 job='/usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' "

参数: (1.)minute参数:此参数用于设置计划任务中分钟设定位的值
(2.)hour参数:此参数用于设置计划任务中小时设定位的值,
(3.)day参数:此参数用于设置计划任务中日设定位的值,
(4.)month参数:此参数用于设置计划任务中月设定位的值,
(5.)weekday参数:此参数用于设置计划任务中周几设定位的值,
(6.)year参数:此参数用于设置计划任务中年设定位的值,
(7.)special_time参数:,计划任务的时间设定格式为 @reboot 或者@hourly。@reboot
表示重启时执行,@hourly 表示每小时执行一次,相当于设置成”0 0 * * *” ,这种@开头的时间设定格式则需要使用
special_time 参数进行设置,special_time 参数的可用值有
reboot(重启后)、yearly(每年)、annually(每年,与yearly相同)、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时)。

(8.)user参数:此参数用于设置当前计划任务属于哪个用户,当不使用此参数时,默认为管理员用户。

(9.)job参数:此参数用于指定计划的任务中需要实际执行的命令或者脚本,比如上例中的 “echo test” 命令。

(10.)name参数:此参数用于设置计划任务的名称,计划任务的名称会在注释中显示,当不指定计划任务的名称时,ansible
会默认为计划任务加入注释,注释的内容为 #Ansible: None,假设指定计划任务的名称为 test,那么注释的内容为#Ansible:
test,在一台机器中,计划任务的名称应该具有唯一性,方便我们以后根据名称修改或删除计划任务。

(11.)state参数:当计划任务有名称时,我们可以根据名称修改或删除对应的任务,当删除计划任务时,需要将 state 的值设置为
absent。

(12.)disabled参数:当计划任务有名称时,我们可以根据名称使对应的任务”失效”(注释掉对应的任务)。注意,使用此参数时,除了需要指定任务的名称,还需要同时指定任务的job
以及任务的时间设定,而且任务的时间设定必须和对应任务完全相同,否则在注释任务的同时,任务的时间设定会被修改,除非你确定这样做。

(13.)backup参数:如果此参数的值设置为
yes,那么当修改或者删除对应的计划任务时,会先对计划任务进行备份,然后再对计划任务进行修改或者删除,cron 模块会在远程主机的 /tmp
目录下创建备份文件,以 crontab 开头并且随机加入一些字符,具体的备份文件名称会在返回信息的 backup_file
字段中看到,推荐将此此参数设置为 yes
ansible web01 -m cron -a "name=‘ntpdate time’ minute=*/5 job=’/usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null’ "
注释:写时间必须按照这个顺序:分钟(minute),小时(hour),日(day),month(月),weekday(周)

12.unarchive压缩模块

ansible web -m unarchive -a “src=/usr/src/redis-5.0.7.tar.gz dest=/usr/src/”

用ansible安装httpd

一. 两台主机

ansible:192.168.1.133
web:192.168.1.137

二. 安装httpd

ansibnle主机

  1. 安装ansible

yum -y install epel-release
yum -y install ansible

  1. 为ansible写主机清单(末尾添加)
    vim /etc/ansible/hosts
	#末尾添加:
	[web]
		192.168.1.137

3.本机 安装httpd,

yum -y install httpd

  1. 启用80端口

    vim  /etc/httpd/conf/httpd.conf
       ServerName www.example.com:80             #将94行的#好去点
    
  2. 修改tab缩进2格

root@localhost playbook]# vim /root/.vimrc
#添加:
set tabstop=2
#保存退出

三. 用ansible剧本给web主机安装httpd

  1. root免密登录
    ssh-keygen -t rsa
    ssh-copy-id [email protected]

  2. 关闭两台主机的防火墙

[root@localhost ansible]# ansible all -m shell -a "systemctl stop firewalld" 
[root@localhost ansible]# ansible all -m shell -a "systemctl status firewalld"        
  1. 复制httpd.conf到当前目录,修改端口为8080
[root@localhost ansible]# cd  /etc/ansible/
[root@localhost ansible]# mkdir playbook
[root@localhost ansible]# cd playbook/

  1. 编写playbook剧本
root@localhost playbook]# vim httpd.yaml
- hosts: web

  tasks:
    - name: install httpd
      yum: name=httpd state=latest

    - name: httpd config
      copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd

    - name: start httpd
	  shell: systemctl start httpd	
  handlers:
    - name: restart httpd
      shell: systemctl restart httpd

你可能感兴趣的:(ansible,运维)