HankChow's Blog


  • 首页

  • 归档

  • 关于

  • 标签

  • 搜索

Ansible Inventory 文件

发表于 2016-07-18
字数统计: 595 | 阅读时长 ≈ 2

Ansible 的 Inventory 文件主要记录了连接主机的信息和配置,默认路径为 /etc/ansible/hosts。

在 Inventory 文件中以行为单位直接写入主机的 host,如果仅填写了 host,则其它信息均按照默认值(如 ssh 端口为22)。也可以按照组的格式进行配置:

1
2
3
4
5
6
7
8
9
10
11
[group1]
host1
host2

[group2]
host2
host3

[group3:children]
group1
group2

同一个主机可以同时属于多个组,如 host2 可以同时属于 group1 组和 group2 组。组也可以作为另一个组的成员,如 group1 和 group2 就是 group3 的成员,因此 host1、host2、host3 均属于 group3 组。

在每个 host 后可以使用变量来设置一些具体的参数,例如端口、登录用户名等。也可以为整个组设定变量:

1
2
3
[group1:vars]
ansible_ssh_port=2222
ansible_ssh_user=root

常用的 Inventory 参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ansible_ssh_host
将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.

ansible_ssh_port
ssh端口号.如果不是默认的端口号,通过此变量设置.

ansible_ssh_user
默认的 ssh 用户名

ansible_ssh_pass
ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)

ansible_sudo_pass
sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)

ansible_sudo_exe (new in version 1.8)
sudo 命令路径(适用于1.8及以上版本)

ansible_connection
与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.

ansible_ssh_private_key_file
ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.

ansible_shell_type
目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'.

ansible_python_interpreter
目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 \*BSD, 或者 /usr/bin/python
不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26).

与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....

各种文档链接

发表于 2016-03-01
字数统计: 5 | 阅读时长 ≈ 1

Ansible

BeautifulSoup

itchat

requests

scrapy

在新机器上快速安装 Python 3

发表于 2016-02-14
字数统计: 251 | 阅读时长 ≈ 1

对于以 Python 3 为主力开发语言的人来说,在一台新的机器上必须尽早安装上 Python 3。而对于绝大多数 Linux 发行版来说,都只默认安装了 Python 2 而没有 Python 3,而且有一些 Linux 自带的命令(例如 yum)会依赖 Python 2,这就需要在安装 Python 3 的同时保留 Python 2,并且使两者区分开来。

快速安装如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 版本号
version="3.6.2"

# 安装依赖包
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

# 下载 Python 3 源码,版本号可改
which wget || yum -y install wget
wget https://www.python.org/ftp/python/$version/Python-$version.tar.xz

# 解包、编译、安装
mkdir /usr/local/python3
mv ./Python-$version.tar.xz /usr/local/python3
cd /usr/local/python3
tar -xvJf Python-$version.tar.xz
cd Python-$version
which gcc || yum install -y gcc
./configure --prefix=/usr/local/python3
make && make install

# 设定 Python 3 和 pip3 的软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

在 Vim 内 sudo 保存文件

发表于 2016-01-29
字数统计: 199 | 阅读时长 ≈ 1

有时候未使用 root 用户在一些较为重要的目录下使用 Vim 编辑文件时,往往会因为权限不足而无法保存,而退出去 sudo 后重新编辑又比较浪费时间。这个时候需要在 Vim 中执行下面这个命令,就可以在不退出 Vim 的前提下 sudo 保存文件。

1
:w !sudo tee %

:w 在 Vim 中是保存文件,这是毫无疑问的。

!后面跟一个命令,表示让 Vim 执行一个外部命令。

tee 是一个把 stdin 保存到文件的小工具,具体用法是:

1
tee {filename}

就能将 stdin 流保存到指定的文件中。

% 是 Vim 当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。

MySQL 引擎 MyISAM 和 InnoDB 的区别

发表于 2015-12-13
字数统计: 436 | 阅读时长 ≈ 1

MySQL 5.5 开始 InnoDB 成为 MySQL 的默认引擎(之前是 MyISAM)。

  1. MyISAM 不支持事务,InnoDB 支持事务。对于 InnoDB 每一条 SQL 语句都默认封装成事务自动提交,但会影响速度。所以最好把多条 SQL 语句放在 begin 和 commit 之间组成一个事务。
  2. MyISAM 不支持外键,InnoDB 支持外键。如果一个 InnoDB 表包含外键,这个表转为 MyISAM 表的时候会失败。
  3. MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的。InnoDB 是聚集索引,数据文件和索引绑定在一起,因此必须要有主键,且通过主键索引的效率很高。但辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。
  4. MyISAM 用一个变量保存了整个表的行数,执行 SELECT COUNT(*) 的时候直接读出该变量即可,速度很快。InnoDB 不保存表的具体行数,执行 SELECT COUNT(*) 的时候需要全表扫描。
  5. MyISAM 支持全文索引,查询效率较高。InnoDB 不支持全文索引。
  6. MyISAM 更强调性能,更适用于执行 SELECT 较多的情况。InnoDB 更适用于 INSERT 和 UPDATE 较多的情况。
  7. MyISAM 在 DELETE 操作时会重新建立一个表,InnoDB 会一行一行地删除记录。
  8. MyISAM 不支持行锁,只支持表锁。MyISAM 同一个表上的读锁和写锁是互斥的,MyISAM 并发读写时如果等待队列中同时有读和写请求,默认写请求的优先级高,但 MyISAM 的写操作性能较低,会导致进程阻塞。InnoDB 支持行锁。
1…14151617
HankChow

HankChow

84 日志
74 标签
0%
© 2019 HankChow | Site words total count: 111.3k