Q: puppet能否创建硬链接,follow参数作用到底是什么?
45 #file {'/tmp/aaa':
46 # ensure => present,
47 # target => "/root/install.log",
48 # path => "/tmp/aaa",
49 #links => manage,
50 #links => follow,
51 # source => "/root/install.log",
52 #}
尝试用ensure=link的方法,创建一个/root/install.log的硬链接到/tmp/aaa,但是没有成功,第一次创建了一个属性一致的空文件,第二次创建了一个软连接。没有创建预料中的硬链接!
[root@puppet2 tmp]# puppet agent -t
//第一次拉取
[root@puppet2 tmp]# ll
total 8
-rw-r--r-- 1 root root 0 Jun 13 06:09 aaa
//空文件
[root@puppet2 tmp]# puppet agent -t
//第二次拉取
lrwxrwxrwx 1 root root 17 Jun 13 06:10 aaa -> /root/install.log //变成了软连接
-rw-r--r-- 1 root root 0 Jun 13 06:10 date.log
A:
1.将ensure=present选项变为ensure=link
file {'/tmp/aaa':
46 ensure => link,
47 target => "/root/install.log",
48 path => "/tmp/aaa",
49 # links => manage,
50 links => follow,
51 # source => "/root/install.log",
52 }
直接变成了软连接
lrwxrwxrwx 1 root root 17 Jun 13 06:15 aaa -> /root/install.log
-rw-r--r-- 1 root root 0 Jun 13 06:14 date.log
2.更换写法,不用link,用source
45 file {'/tmp/aaa':
46 ensure => link,
47 # target => "/root/install.log",
48 path => "/tmp/aaa",
49 # links => manage,
50 # links => follow,
51 source => "/root/install.log",
52 }
结果:
[root@puppet2 tmp]# ll -i
total 24
658875 -rw-r--r-- 1 root root 14197 Jun 13 06:17 aaa
//源文件
[root@puppet2 ~]# ll -i
total 48
141308 -rw-------. 1 root root 1137 Jun 8 09:12 anaconda-ks.cfg
130051 -rw-r--r--. 2 root root 14197 Jun 8 09:12 install.log
两个文件虽然内容一致,但是并不是硬链接,从iNode号可以看出,只是复制了一遍文件。
结论:
①在puppet中,并不能创建硬链接。
②第一次拉取空文件是因为“follow”,这个选项生效了,成功将源文件所有信息都复制了一遍,但是只复制了属性而没有复制内容,第二次拉取target生效,将文件变成了软连接。但是并没有办法创建硬链接。