Ansible基本配置以及使用示例
2017-04-23 00:00
639 查看
摘要: 配置管理工具Ansible的使用
##Ansible基本使用以及模块详解
准备条件:
将ansible主机的公钥内容拷贝到目标主机,多种方式:
###Ansible目录结构介绍以及配置介绍
主配置文件:/etc/ansible/ansible.cfg
主机信息配置文件: /etc/ansible/hosts
roles规则目录: /etc/ansible/roles/
###Ansible 模块使用指南:
使用Ad-Hoc模式(在命令行中定义任务并执行)来测试模块
格式如下:
**ansible的Ad-Hoc模式特殊选项options:**可以在后面加上
####copy模块使用详情
相关选项如下:
**示例1:**使用copy模块进行远程拷贝文件,并赋予相关的权限。默认使用sudo切换到root执行
backup=yes 会在目标路径下备份一份文件出来
如下命令会预览在目标主机执行的操作,但是不会真正执行
####file模块使用详情
相关选项如下:
directory:如果目录不存在,就创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
**示例2:**使用file模块在源文件不存在的情况下强制创建软链:
####command模块使用详情
相关选项如下:
####shell模块详情
与command不同的是,此模块可以支持命令管道,同时还有另一个模块也具备此功能:
**示例3:**使用yum模块进行安装服务
**示例4:**使用service模块进行管理服务
**示例5:**使用pip模块安装python依赖包
##Ansible基本使用以及模块详解
准备条件:注意:前提是ansible已经正常安装,并且可以使用
1.在ansible主机上创建ssh公私钥对
ansible-sh-4.1sh-4.1# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: de:74:be:8b:2e:a2:9f:03:78:a2:4a:40:27:ee:c5:3e root@JXQ-23-200-36.h.chinabank.com.cn The key's randomart image is: +--[ RSA 2048]----+ | | | | | o . | |o + | |.. + S . . | |o = o . o o | | + E . . . . | |o . o.. . . | |o .ooo oo o. | +-----------------+ 一切采用默认就行
2.在目标机添加ansible主机的公钥 (当然也可以使用密码验证的方式):
注意:需要在目标主机的对应用户家目录下有.ssh目录以及authorized_keys文件,若无可以自行创建.ssh目录权限必须为0700,authorized_keys文件的权限必须为0644
将ansible主机的公钥内容拷贝到目标主机,多种方式:
ansible-sh-4.1# ssh-copy-id /root/.ssh/id_rsa.pub 目标IP: #默认就是将当前用户的公钥(id_rsa.pub)传到目标主机并且存入认证文件 target-sh-4.1#curl pd.api.com/host_key >> /root/.ssh/authorized_keys #可以将ansible主机的公钥文件存入公共存储,然后追加到目标主机的认证文件中
3.测试连接
ansible-sh-4.2# ansible target-sh -m ping target-sh | SUCCESS => { "changed": false, "ping": "pong" }
###Ansible目录结构介绍以及配置介绍
1. Ansible目录结构
使用rpm包或者apt包安装会默认创建目录结构,但是使用pip或者源码包需要对基本的目录结构进行构建
主配置文件:/etc/ansible/ansible.cfg
主机信息配置文件: /etc/ansible/hosts
roles规则目录: /etc/ansible/roles/
2.优化后的配置配置:
ansible-sh-4.1#cat /etc/ansible/ansible.cfg [defaults] #常规连接类配置 inventory = /etc/ansible/hosts #定义主机信息配置文件,默认路径 forks = 5 #定义默认开启的并发数 poll_interval = 15 #定义轮询时间间隔 sudo_user = root #定义默认sudo用户 #ask_sudo_pass = True #是否需要sudo密码 #ask_pass = True #是否需要密码 remote_port = 51899 #定义ssh端口 roles_path = /etc/ansible/roles #默认的role规则路径 host_key_checking = False #首次连接检查key认证(record_host_keys协作使用) timeout = 10 #默认超时时间 log_path = /var/log/ansible.log #默认日志路径 deprecation_warnings = Flase #该参数在使用playbooks操作的时候sudo权限不会进行提示 nocows = 1 #关闭cowsay功能,如果需要启用的话必须首先安装了cowsay才可以 nocolor = 0 #开启颜色,下面的colors设置相关的颜色 [privilege_escalation] #权限管理 #become = True #是否sudo #become_method = True #sudo方式 #become_user = root #sudo后变成root用户 #become_ask_pass= False #sudo后是否验证密码 [paramiko_connection] #连接配置 record_host_keys=Flase #记录新主机的key.在host_key_checking 被禁用时候,设置为False时,性能将会提升 [ssh_connection] #ssh协议连接配置 ssh_args = -C -o ControlMaster=auto -o ControlPersist=1800s #传递一组选项给Ansible,而不是使用以前的默认值.ControlPersist的值提高会提高性能,30分钟会比较合适 [accelerate] #加速配置 #accelerate_port = 5099 #加速连接端口 #accelerate_timeout = 30 #命令执行超时时间,单位秒 #accelerate_connect_timeout = 5.0 #连接超时时间 #accelerate_daemon_timeout = 30 #上一个活动连接的时间,单位分钟 [selinux] #该参数一般不会使用 [colors] #配置常用的颜色 highlight = white verbose = blue warn = bright purple error = red ok = green changed = yellow diff_add = green diff_remove = red diff_lines = cyan pipelining=true
###Ansible 模块使用指南:
使用Ad-Hoc模式(在命令行中定义任务并执行)来测试模块
格式如下:
ansible <host-pattern> -m module -a 'args' options
**ansible的Ad-Hoc模式特殊选项options:**可以在后面加上
-C参数,这样将预览未来要做的操作,但是不会真正执行;
--sudo表示使用sudo去执行相关的操作
####copy模块使用详情
相关选项如下:
backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代“src”,可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:递归设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。
**示例1:**使用copy模块进行远程拷贝文件,并赋予相关的权限。默认使用sudo切换到root执行
ansible jrm -m copy -a 'src=env.sh dest=/export/Domains/jrmcalendar.jd.local/server1/bin/ owner=admin group=admin mode=0755' --sudo
注意:copy模块中:
backup=yes 会在目标路径下备份一份文件出来
如下命令会预览在目标主机执行的操作,但是不会真正执行
ansible jrm -m copy -a 'src=start.sh dest=/export/Domains/jrmcalendar.jd.local/server1/bin/start.sh owner=admin group=admin mode=0755 backup=yes' --sudo -C
####file模块使用详情
相关选项如下:
force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归设置文件的属性,只对目录有效
src:被链接的源文件路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state:
directory:如果目录不存在,就创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
**示例2:**使用file模块在源文件不存在的情况下强制创建软链:
ansible jrapp-h5 -m file -a "src=/export/Instances/licai.base.fundredempt/runtime dest=/export/App/sc.licai.base.jd.local/fund state=link force=yes " --sudo
####command模块使用详情
相关选项如下:
creates:一个文件名,当该文件存在,则该命令不执行
free_form:要执行的linux指令
chdir:在执行指令之前,先切换到该目录
removes:一个文件名,当该文件不存在,则该选项不执行
executable:切换shell来执行指令,该执行路径必须是一个绝对路径
####shell模块详情
与command不同的是,此模块可以支持命令管道,同时还有另一个模块也具备此功能:
raw
示例: ## 先在本地创建一个SHELL脚本 # vim /tmp/rocketzhang_test.sh #!/bin/sh date +%F_%H:%M:%S #chmod +x /tmp/rocketzhang_test.sh ## 将创建的脚本文件分发到远程 # ansible storm_cluster -m copy -a "src=/tmp/rocketzhang_test.sh dest=/tmp/rocketzhang_test.sh owner=root group=root mode=0755" ##然后远程执行该脚本 #ansible storm_cluster -m shell -a '/tmp/rocketzhang_test.sh'
**示例3:**使用yum模块进行安装服务
#ansible bigdata -m yum -a "name=ntp state=present" #ansible bigdata -m copy -a 'src=ntp.conf dest=/etc/ntp.conf backup=yes'
**示例4:**使用service模块进行管理服务
# ansible bigdata -m service -a "name=ntpd state=restarted"
**示例5:**使用pip模块安装python依赖包
# ansible bigdata -m pip -a 'name=docker state=present'
相关文章推荐
- Marthon docker 配置fluent示例 以及tag使用
- Druid基本使用配置以及如何查看sql信息监控日志
- SSH原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- Android Studio 安装配置详细步骤,以及使用的基本操作
- [转]SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- 使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- 文字编辑器FCKeditor 简介以及基本配置和使用方法
- 9、数据库初学习,基本安装以及配置、使用方法
- 华为ENSP使用,以及基本的华为交换机配置
- docker 基础安装配置以及swarm 基本操作使用
- Spring Boot 配置Druid监控以及基本特征监测使用
- Mac环境下Android Studio配置Git以及最基本使用
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- yum源配置以及yum的使用解析示例
- HDFS安装、配置以及基本使用
- Ansible使用jinja2管理配置文件以及jinja2语法简介
- Marthon docker 配置fluent示例 以及tag使用