Ansible介绍
ansible是一款轻量级的自动化管理工具,相对于puppet,saltstack来说它更加的轻量化,用python编写。支持多种指令操作,同时也支持playbook。通过ssh进行通信,客户端无需安装客户端即可进行批量管理。
ansible组成
- ansible:主要的服务,用于调用其他各种组件;
- inventoy:用于存储要控制的主机,包括主机用户名密码等信息;
- playbooks:用于制定各种playbook;
- core modules:ansible的核心模块,ansible依赖各种模块进行服务器控制;
- custome modules:自定义模块;
- connect plugins:调用python的并发连接器进行服务器连接;
- other plugins:其他插件,例如日志记录,邮件等;
ansible控制方式
- 免密钥控制
- 通过inventoy记录主机ip地址(主机名)、用户名密码进行控制
ansible命令执行方式
- 通过调用各种模块进行命令执行
- 通过编写playbook进行服务器各种管理工作
ansible配置文件
- /etc/ansible/ansible.cfg:ansible配置文件
- /etc/ansible/hosts:inventoy配置文件
ansible获取帮助信息
ansible-doc -s 模块名
ansible常用模块
command:用于执行命令,但是不能应用变量,管道等
ansible test -m command -a ‘date‘
shell:类似command,可以用变量,管道等
ansible test -m shell -a ‘echo 1234567a |passwd test --stdin‘
user常用选项:
- name:用户名
- password:密码
- state:present为添加,absent为删除
- remove:删除用户,yes|no
- system:是否为系统用户
- createhome:是否创建家目录
- shell:指定用户shell
- group:设置基本组
- groups:设置夫家族
- uid:指定uid
ansible test -m user -a ‘name=hello password=123456 state=present system=yes createhome=no‘
group常用选项:
- name:组名
- gid:gid
- state:present为创建,absent为删除
- system:是否为系统组
ansible all -m group -a ‘name=hello system=yes state=present‘
cron常用选项:
- day:天,1-9,,/3
- hour:小时
- month:月
- name:cron任务名
- state:present,absent
- weekday:周
- minute:分钟
- job:工作内容
ansible all -m cron -a ‘minute=*/1 name="echo hello world" job="echo hello world" state=present‘
copy常用选项:
- src:源文件绝对路径或相对路径
- dest:目标地址,必须是绝对路径
- content:可以代替src,要写入到dest文件中的内容,会echo追加进去
- owner:属主
- group:属组
- backup:覆盖文件之前是否备份,yes|no
- directory_mode:递归设定目录权限
force:yes,如果文件存在,但是内容不同,则强行覆盖,默认选项;no,如果文件不存在才复制
ansible test -m copy -a ‘src=/etc/fstab dest=/tmp/fstab.ansible owner=test group=hello‘ ansible test -m copy -a ‘content="hello world" dest=/tmp/log.ansible‘ #把hello world写入目标文件
file常用模块:
- owner:属主
- group:属组
- mode:权限
- recurse:递归设置,对目录有限
- state
- touch:创建一个空白文件
- directory:创建一个新目录,目录存在则不会修改
- link:创建软链接
- hard:创建硬链接
- absent:删除
- src:当state=link的时候,要被链接的源文件