2017-02-18 123 views
0

我与openshift/minishift实验,我发现自己不必运行:Openshift:如何编辑SCC非交互式?

oc edit scc privileged

,并添加:

- system:serviceaccount:default:router

所以我可以公开的豆荚。有没有办法在脚本中做到这一点?

我知道oc adm有政策操作的一些命令,但我无法弄清楚如何加入这一行。

回答

2

可以使用oc patch命令和类型JSON实现它。下面的代码片段将在第0个元素之前向数组添加一个新项目。你可以尝试一下用假“BLA”数值等

oc patch scc privileged --type=json -p '[{"op": "add", "path": "https://stackoverflow.com/users/0", "value":"system:serviceaccount:default:router"}]' 

--type=json将解释提供补丁为jsonpatch操作。不幸的是oc patch --help不提供JSON补丁类型的任何实例。幸运的是,例如使用可以在kubernetes文档中找到:kubectl patch

+0

太棒了!我coud找不到'OC patch' +1,'OC代替-f -'奏效了我。 – Tiago

0

我找到一个管道示例sedHere,并将其改编为红宝石,以便我可以轻松编辑数据结构。

oc get scc privileged -o json |\ 
ruby -rjson -e 'i = JSON.load(STDIN.read); i["users"].push "system:serviceaccount:default:router"; puts i.to_json ' |\ 
oc replace scc -f - 

这里是quick and dirty script上手minishift

0

在命令行中添加和删除用户的SCC最简单的方法是使用oc adm policy命令:

oc adm policy add-scc-to-user <scc_name> <user_name> 

欲了解更多信息,请参阅this section


因此,对于您的具体使用情况,这将是:

oc adm policy add-scc-to-user privileged system:serviceaccount:default:router 

我很惊讶它的需要,但。我通常使用“oc cluster up”,但是使用最近的minishift进行测试,其已经添加了开箱即用:

$ minishift start 
$ eval $(minishift oc-env) 
$ oc login -u system:admin 
$ oc get scc privileged -o yaml | grep system:serviceaccount:default:router 
- system:serviceaccount:default:router 

$ minishift version 
minishift v1.14.0+1ec5877 
$ oc version 
openshift v3.7.1+a8deba5-34