How do you define a single operation (i.e. opcode) is, when telling if an instruction has multiple operation (i.e. opcodes)?
The definitions and your expectations are not quite correct. "Opcode" is used for indicating visible instructions, not hidden operations like micro-ops, and "instruction" should only refer to user-exposed operations. An "operation" does not corresponds to an opcode and may be simple (a single opcode) or complex (multiple opcodes) depending on how you refer to it, like if you want to address the whole operation itself, or address each lower level operation used to achieved that big thing. It's just like when you do a division, it can be called a single operation. But division can also be subdivided into a series of subtractions/multiplications, i.e. multiple operations (stages in hardware term). Many old RISC architectures have separate instructions for various stages of a division to keep the instructions simple and make pipelining straightforward. But modern RISC architectures typically don't do that and can have very complex instructions like CISC, for example rlwinm in PowerPC or ldm/stm in ARM.
In VLIW architectures, a single instruction is still 1 instruction. However, instructions will be grouped together as a batch. For example, a batch in Itanium architecture contains 3 instructions that will be run at the same time. Of course each instruction must have its own opcode, and those opcodes are available to the programmer to use. Moreover those instructions are independent of the others, unlike micro-ops which jointly represents an operation of some higher level instruction. For example in some architecture you may have 2 additions along with a multiplication and a bitwise xor of different things in a batch that doesn't relate to each other.
On the contrary, a CISC instruction is only one instruction that does a single operation, and has one opcode. Prior generations of CISC CPUs execute each instruction directly, so it's really a single unbreakable instruction. However in modern processors, complex "operations" will be divided into multiple simpler micro-operations that can be done in shorter clock cycles. Those micro-ops are not visible to outsiders, so you can't call them multiple opcodes. To users, it's still a single instruction. You will probably never know which micro-ops Intel or AMD is using under the hood. Besides a CISC instruction can be broken into a single micro-op or multiple ones, so it's completely wrong to say CISC includes multiple operations in a single instruction.
In fact modern RISC architectures also break instructions into micro-ops just like CISC, and very simple operations are also combined together into a macro-op that's also not user-visible, for example CMP/Jcc in x86 or DIV/REM in RISC-V and you won't say that RISC is simple. A RISC instruction can still do multiple operations.
CISC and VLIW, one has a single instruction with a single opcode running at a time (barring superscalar and out-of-order execution for now), one executes multiple instructions at a time, so how are they the same concept? You should view on top of the instruction set or at least the same level. Comparing a thing used internally in a CPU with a thing on the instruction set above the CPU is meaningless.