学习记录: 安装配置自动化工具ansible

  • 学习记录:  装配置ansible

更新日期: 2016-11-30


系统环境    :centos6.5

本机ip        :192.168.233.123

被管理机ip :192.168.233.124

—————————————————————————————————————

py版本       :   默认python2.6

ansible版本:ansible 1.7.2

  • ansible参数:

            -m  模块名(执行命令)

             -a  模块参数

              -i  目录清单(/etc/ansible/hosts)

              ansible-doc -l  显示所有自带模块

1.安装相关模块

(1)、setuptools模块安装


# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz --no-check-certificate

# tar zvxf setuptools-7.0.tar.gz

# cd setuptools-7.0

# python setup.py install

(2)、PyYAML模块安装


# wget http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz

# tar zvxf yaml-0.1.5.tar.gz

# cd yaml-0.1.5

# ./configure --prefix=/usr/local/

# make && make install

# wget https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz --no-check-certificate

# tar zvxf PyYAML-3.11.tar.gz

# cd PyYAML-3.11

# python setup.py install

(3)、Jinja2模块安装


# wget https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz --no-check-certificate

# tar zvxf Jinja2-2.7.3.tar.gz

# cd Jinja2-2.7.3

# python setup.py install

(4)、paramiko模块安装

# wget https://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz --no-check-certificate

# tar zvxf paramiko-1.15.1.tar.gz

# cd paramiko-1.15.1

# python setup.py install

2.安装ansible

# wget http://releases.ansible.com/ansible/ansible-1.7.2.tar.gz
#  tar zvxf ansible-1.7.2.tar.gz 

# cd ansible-1.7.2/

# python setup.py install

3.配置免密钥登录

(1)生成秘钥

[[email protected] ~]# cd ~/.ssh/

[[email protected] .ssh]# 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):    (ssh密码空)

Enter same passphrase again:     (ssh密码空)

(2)将公钥传输到被管理机

[[email protected] .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

(3)测试免密钥登录

[[email protected] .ssh]# ssh [email protected]

Last login: Wed Nov 23 10:09:58 2016 from 192.168.233.1

[[email protected] ~]# exit

logout

Connection to 192.168.233.124 closed.

4. 配置ansible

(1) 创建ansible目录,将生成的ansible.cfg、hosts 文件拷贝到此目录

[[email protected] ]# mkdir /etc/ansible/

[[email protected] ]# cd examples/

[[email protected] examples]# cp ansible.cfg hosts /etc/ansible/

(2)设置环境变量


[[email protected] examples]# export ANSIBLE_SUDO_USER=root

(3)修改配置文件相应参数


[[email protected] examples]# cd /etc/ansible/

[[email protected] ansible]# vim ansible.cfg

14 inventory       = /etc/ansible/hosts

15 library        = /usr/share/ansible

18 forks          = 5

20 sudo_user      = root

24 remote_port    = 22

39 host_key_checking = False

48 timeout = 60

56 log_path = /var/log/ansible.log

(4)查看版本


[[email protected] ansible]# ansible --version

ansible 1.7.2

5. 添加主机并测试

(1) 添加host

[[email protected] ansible]# vim hosts 

......省略以上

[test]

192.168.233.124

(2)测试主机连通性

[[email protected] ansible]# ansible test -m ping

192.168.233.124 | success >> {

"changed": false,

"ping": "pong"

}

  • shell模块
[[email protected] ansible]# ansible test -m shell -a ‘/bin/echo hello ansible!‘ -i hosts 

192.168.233.124 | success | rc=0 >>

hello ansible!

  • command模块

[[email protected] ansible]# ansible test -m command -a ‘/bin/echo hello ansible!‘ -i hosts 

192.168.233.124 | success | rc=0 >>

hello ansible!

  • copy文件到.124主机
[[email protected] ansible]# ansible test -m copy -a "src=/root/history dest=/root mode=655"

192.168.233.124 | success >> {

"changed": true,

"dest": "/root/history",

"gid": 0,

"group": "root",

"md5sum": "2e88c32c0c8c54869253563dfcfb90e9",

"mode": "0655",

"owner": "root",

"path": "/root/history",

"secontext": "system_u:object_r:admin_home_t:s0",

"size": 78415,

"state": "file",

"uid": 0

}

  • 修改所传文件history所属主

[[email protected] ansible]# ansible test -m file -a "path=/root/history owner=centos"

192.168.233.124 | success >> {

"changed": true,

"gid": 0,

"group": "root",

"mode": "0655",

"owner": "centos",

"path": "/root/history",

"secontext": "system_u:object_r:admin_home_t:s0",

"size": 78415,

"state": "file",

"uid": 1001

}

————————————————————————————————————

被管理机:192.168.233.124

[[email protected] ~]# ls -l

-rw-------. 1 root   root  1263 8月   9 18:01 anaconda-ks.cfg

-rw-r-xr-x. 1 centos root 78415 11月 28 14:38 history

  • 在存在的目录/test下创建新文件1.txt  [state 定义目标状态]
[[email protected] ansible]# ansible test -m file -a "path=/test/1.txt state=directory"

192.168.233.124 | success >> {

"changed": true,

"gid": 0,

"group": "root",

"mode": "0755",

"owner": "root",

"path": "/test/1.txt",

"secontext": "unconfined_u:object_r:default_t:s0",

"size": 6,

"state": "directory",

"uid": 0

}

  • 每五分钟同步一次时间

[[email protected] ansible]# ansible test -m cron -a "minute=‘*/5‘

job=‘/usr/sbin/ntpdate 192.168.233.123 &> /dev/null‘ name=‘sync time‘"

192.168.233.124 | success >> {

"changed": true,

"jobs": [

"sync time"

]

}

—————————————————————————————————————

被管理机:192.168.233.124

[[email protected] test]# crontab -l

#Ansible: sync time

*/5 * * * * /usr/sbin/ntpdate 192.168.233.123 &> /dev/null

6. 初写playbook

(1) playbook都以.yaml结尾

[[email protected] ~]# vim test.yaml

- hosts: test

remote_user: root

tasks:

- name: copy authorized_keys

copy: src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys

- name: restart iptables

service: name=iptables state=restarted

- name: iptables

shell: iptables -A INPUT -p icmp -j REJECT

- name: iptables

shell: iptables -A INPUT -p tcp -s 192.168.100.1 --dport 22 -j ACCEPT

(2) ansible-playbook 加上文件即可执行

[[email protected] ~]# ansible-playbook  test.yaml

PLAY [test] *******************************************************************

GATHERING FACTS ***************************************************************

ok: [192.168.233.124]

TASK: [copy authorized_keys] **************************************************

changed: [192.168.233.124]

TASK: [restart iptables] ******************************************************

changed: [192.168.233.124]

TASK: [iptables] **************************************************************

changed: [192.168.233.124]

TASK: [iptables] **************************************************************

changed: [192.168.233.124]

7. 使用playbook安装salt-minion


- hosts: test

remote_user: root

tasks:

- name: copy authorized_keys

template: src=~/.ssh/id_rsa.pub

dest=/root/.ssh/authorized_keys

#    - name: iptables    ##将iptables11行对应内容替换

#        shell: sed -i ‘11s/REJECT/ACCEPT/‘ /etc/sysconfig/iptables

- name: backup

shell: cd /etc/yum.repos.d/ && mkdir bak && mv epel.repo yum.repo bak/

- name: Download epel

get_url: url=https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm dest=/etc/yum.repos.d/salt-repo-latest-1.el6.noarch.rpm

- name: Install epel

shell: rpm -ivh /etc/yum.repos.d/salt-repo-latest-1.el6.noarch.rpm creates=/etc/yum.repos.d/salt.repo

- name: Clean cache

shell: yum clean all

- name:

shell: yum makecache

- name: Install salt-minion

yum: name=salt-minion state=latest

- name: copy salt conf file  (##拷贝的文件在本机创建好,并改好配置)

copy: src=/etc/ansible/files/minion dest=/etc/salt/minion

## ALLOW RELATED,ESTABLISHED

- iptables: chain=INPUT ctstate=RELATED,ESTABLISHED jump=ACCEPT

## ALLOW IP

- iptables: chain=INPUT in_interface=eth0 protocol=tcp match=tcp source=192.168.233.124 destination_port=22 jump=ACCEPT

## REJECT icmp

- iptables: chain=INPUT in_interface=eth0 protocol=icmp jump=REJECT

- iptables: chain=FORWARD in_interface=eth0 protocol=icmp jump=REJECT

## REJECT lo

- iptables: chain=INPUT in_interface=lo jump=ACCEPT

- name: save iptables

command: service iptables save

- name: iptables restart

shell: /etc/init.d/iptables restart

可登录到被管理机验证。

时间: 2024-10-02 22:48:45

学习记录: 安装配置自动化工具ansible的相关文章

在 CentOS 7 中安装并使用自动化工具 Ansible

Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于Chef和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端.它使用SSH来和节点进行通信. 本篇中我们将在CentOS7上安装并配置Ansible,并且尝试管理两个节点. Ansible 服务端 – ansible.linuxtechi.com ( 192.168.1.15 ) 节点 –192.168.1.9 , 192.168.1.10 第一步: 设置EPEL仓库 Ansibl

运维自动化工具ansible(安装)

一.安装 注意:强烈建议升级python版本到2.6以上,不然运行会出错或者有些功能会没有,在编译安装其他包的时候也会因为兼容问题报错. (1).python2.7安装 https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz # tar xvzf Python-2.7.8.tgz # cd Python-2.7.8 # ./configure --prefix=/usr/local # make # make install ## 将py

自动化工具——ansible

一.什么是ansible 我们在管理服务器时首先应该是安装操作系统,而关于自动化安装操作系统工具常见的有:cobbler.而在装完操作系统后就是配置系统的相关服务的配置文件,而关于此类的自动化工具常见的有:puppet.saltstack.而日常维护中我们还需要在各主机执行相关命令等操作,而此类的自动化工具就有:func.fabric已经ansible.最后也是重要的监控系统运行状态的相关自动化工具:cacti.nagios和zabbix等.下面就是将ansible工具的使用. ansible是

运维自动化工具 Ansible

一.Ansible介绍 Ansible 简单的说是一个配置管理系统(configuration management system).你只需要可以使用 ssh 访问你的服务器或设备就行.它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式.你可以将代码部署到任意数量的服务器上! 1.Ansible能做什么 ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作. 比如:同时在100台服务器上安装nginx服务,并在安装后启动它

zookeeper工作原理、安装配置、工具命令简介

1 Zookeeper简介Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等.2 zookeeper基本概念2.1角色Zookeeper中的角色主要有以下三类,如下表所示: 系统模型如图所示: 2.2设计目的1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能.2 .可靠性:具有简单.健壮.良好的性能,如果消息m被到一台服务器

oracle grid 11g学习笔记-安装配置

目录说明: -安装准备 1.1 环境信息 1.2 需要安装依赖包 1.3 用户配置 1.4 存储安装配置 1.5 操作系统参数配置 1.6 环境变量配置 1.7 ssh信任配置 1.8 vnc配置 1.9 asm存储配置 -oracle软件安装 2.1 grid安装 2.2 oracle安装 2.3 asm磁盘划分 2.4 数据库实例安装 -安装问题 3.1 问题1 3.2 问题2 3.3 问题3 3.4 问题4 3.5 问题5 一 安装准备 当企业对于数据库要求比较高,或负载压力比较大的时候,

kickstart安装配置自动化安装系统

环境:VMware Workstation 10.0.1 build-1379776网络:桥接虚拟机A:kickstart+Dhcp+Nfs+Tftp(系统版本centos6.2)        ip  192.168.1.51 虚拟机B:客户机(需要自动化安装系统的机器)                  ip  192.168.1.52 以下操作均在A机上:挂载iso系统文件到光驱,记得在vm里光驱那里[已连接]打勾mount /dev/cdrom /mnt/关闭防火墙和selinuxser

运维自动化工具ansible

一.基础知识: 1. 简介 ansible基于python开发,集合了众多运维工具的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力. 真正具有批量部署的是ansible运行的模块,ansible只是一个框架 ansible架构 (1) 连接插件connection plugins: 负责和被监控端实现通信: (2) host inventory: 指定操作的主机,是一个配置文件里面定义监控的主机 (3) 各种模块核心模块.com

linux学习记录-----安装软件

1.将获取到的软件包解压 tar -zxvf ********* 进入到软件目录,执行make命令,安装软件 报错: 安装gcc编译工具:http://itindex.net/blog/2013/11/21/1385029740000.html,根据相应依赖关系安装 2.安装成功后,gcc -v查看gcc版本,测试是否安装成功! 3.make更新安装 报错: 由于上一次安装时产生了残留文件,致使安装出错 在二次安装之前,执行命令:make distclean清楚残留文件 4.make命令二次安装